【发布时间】:2017-07-12 15:39:36
【问题描述】:
我是 Laravel 新手,我使用的是 laravel 5.4 版本。 我有下一个场景:我有一个用户表,我只输入用户名和密码,还有另外两个表员工和合作伙伴,我保存用户的所有数据,如姓名、地址、电子邮件、电话......
表结构:
用户 - id|用户名|密码|userable_id|userable_type
员工 - id|name|phone|email|salary|position|departamnet
合作伙伴 - id|名称|公司名称
In User model:
class User extends Authenticatable
{
public function userable(){
return $this->morphTo();
}
}
Class Model:
class Employee extends Model
{
protected $fillable = [];
public function users()
{
return $this->morphOne('App\User', 'userable');
}
}
Partner Model:
class Partner extends Model
{
protected $fillable = [];
public function users()
{
return $this->morphOne('App\User', 'userable');
}
}
现在,如果我在 tinker 中执行此 (App\User::first()->userable ),将只为第一个用户返回来自 Employee/Partner 的数据。 for all() 或 get() 方法将返回:
App\User::all()->用户可用 消息“此集合实例上不存在属性 [userable]”的异常。 应用\用户::get()-> 用户可用 消息“此集合实例上不存在属性 [userable]”的异常。
让它适用于所有用户列表有什么改变吗? PS:在 userable_type 上的 users 表中,我有一个模型,而在 userable_id 上,我有与模型对应的行 id,例如 Employee 和 1。提前致谢。
【问题讨论】:
标签: php mysql laravel laravel-5 relationship