[英]Laravel 5 get row from relationship model
我有以下关系模型设置:
用户可以有很多员工类型
<?php namespace App\\Models\\User; use Illuminate\\Auth\\Authenticatable; use Illuminate\\Database\\Eloquent\\Model; use Illuminate\\Auth\\Passwords\\CanResetPassword; use Illuminate\\Contracts\\Auth\\Authenticatable as AuthenticatableContract; use Illuminate\\Contracts\\Auth\\CanResetPassword as CanResetPasswordContract; class User extends Model implements AuthenticatableContract, CanResetPasswordContract { use Authenticatable, CanResetPassword; /** * The database table used by the model. * * @var string */ protected $table = 'user'; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = ['first_name', 'last_name', 'email', 'status', 'activation_code']; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = ['password', 'remember_token', 'activation_code']; /** * The roles that belong to the user. * * @return Object */ public function roles() { return $this->belongsToMany('App\\Models\\User\\Role')->withTimestamps(); } /** * The employee types that belong to the user. * * @return Object */ public function employeeTypes() { return $this->belongsToMany('App\\Models\\User\\EmployeeType')->withTimestamps(); } /** * The job itles that belong to the user. * * @return Object */ public function jobTitles() { return $this->belongsToMany('App\\Models\\User\\JobTitle')->withTimestamps(); } }
现在,我希望能够选择一个用户列表及其所有职务和雇员类型。
我没有这样的运气尝试过这样的事情! 请有人建议这怎么可能吗?
$this->user->whereIn('id', $ids)->jobTitles()->get();
上面的代码给出了错误:
调用未定义的方法Illuminate \\ Database \\ Query \\ Builder :: jobTitles()
使用急切加载 :
$this->user->whereIn('id', $ids)->with('jobTitles', 'employeeTypes')->get();
您只能直接从模型中调用关系,这就是您尝试失败的原因( whereIn()
返回Builder
)。
急切/嵌套加载是在遍历多个模型及其关系之前获取数据的非常有效的方法(否则,您可能最终会有很多数据库查询);)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.