Php Laravel雄辩模型-模型扩展模型

Php Laravel雄辩模型-模型扩展模型,php,laravel,laravel-4,Php,Laravel,Laravel 4,有没有可能用另一个模型来扩展laravel 4 eloquent模型,比如说我有一个用户模型来扩展eloquent类,另外还有第二个类,一个管理员类来扩展user类 如果我只是将administrator类链接到用户,那么我必须通过首先获取用户的administrator属性,然后获取admins属性来访问administrators属性 编辑: 假设管理员没有扩展用户。我必须像这样访问电话号码(管理员属性) $user=user::find(1); $phone=$user->adminis

有没有可能用另一个模型来扩展laravel 4 eloquent模型,比如说我有一个用户模型来扩展eloquent类,另外还有第二个类,一个管理员类来扩展user类

如果我只是将administrator类链接到用户,那么我必须通过首先获取用户的administrator属性,然后获取admins属性来访问administrators属性

编辑:

假设管理员没有扩展用户。我必须像这样访问电话号码(管理员属性)

$user=user::find(1);
$phone=$user->administrator->phone;
但是通过让管理员扩展用户,我可以像这样直接访问电话号码
$user=Administrator::find(1)(请注意,用于查找管理员的id与用于获取用户的id相同。通常,我必须在管理员数据库中传递条目的真实id)
$phone=$user->phone
同时,可以访问用户类的属性,例如
$phone=$user->email


或者可能有更好的解决方案来实现这一点,或者像这样使用它没有任何意义,如果是这样,请随时告诉我原则上这是个好主意,实际上这是个坏主意。如果两个模型使用同一个表,唯一的区别是一个字段,则添加模型污染没有意义。更糟糕的是,您必须修改Laravel处理关系(一对多)的方式,以便在让用户通过其他模型时智能地返回管理员或用户对象

请考虑执行以下操作:

 class User extends \Laravel\Eloquent {
     public function isAdministrator() { return !!$this->is_admin; }
     public static function findAdministrator($r=false) {
        if ($r) return self::where("is_admin","=",true)->where("id","=",(int)$r);
        else return self::where("is_admin","=",true);
     }
 }

这样做会打开模型上的两个新方法:
isAdministrator
,如果用户是管理员,则返回布尔值true,否则返回布尔值false
findAdministrator
,其行为类似于
find
,但有选择地选择管理员


这允许您不必为本质上的关系建立两个模型(毕竟,管理员仍然是用户)。它还可以让你通过有用的原子方法轻松挑选出你需要的东西。

你不确定你的意思,你能解释一下你想要实现什么吗?为什么你在实际尝试做你描述的事情之前先问一个问题,然后根据结果采取行动?我不太了解Laravel的雄辩,但我知道你可以扩展一个类,扩展另一个类,这也是OO被发明的原因之一。因为我还想对我的想法的实用性进行评估is@N.B.:模型的问题是,尽管你可以做任何事情。。。不是所有的东西都是好主意。在使用人际关系时,他的行为会导致很多混乱。@N.B:这一行为会诱使莫里茨养成一些非常坏的习惯,他只有在尝试与他人交往时才会注意到。换言之,这条线已经走得很远了。尝试和错误是一件好事,但有时,提出一个想法,看看结果是否合格,这是一件好事,并为此向他致敬。
findAdministrator
也可以表示为一个范围!