我有一个基于角色的应用程序,其中包含timesheets
,supervisors
和users
。
Timesheets属于users
。
用户被分配到supervisors
,因此supervisors
能够批准用户分配给他们的时间表。
问题是supervisors
还可以提交自己的时间表。
我希望能够选择分配给主管但不属于主管的时间表(即他们没有提交时间表)。
我有以下模型关系设置:
/**
* The user that owns the timesheet.
*
* @return Object
*/
public function user()
{
return $this->belongsTo('App\Models\User\User');
}
/**
* The supervisor that approved the timesheet.
*
* @return Object
*/
public function supervisor()
{
return $this->belongsTo('App\Models\User\User');
}
我目前的代码是:
$this->timesheet->whereHas('user.supervisors', function ($query) {
$query->where('timesheet.status', 'Submitted');
})->get();
但上述代码也选择了主管自己提交的时间表以及分配给他们的时间表。
我尝试了以下代码,只获取分配给主管的时间表......
$this->timesheet->whereHas('user.supervisors', function ($query) {
$query->where('timesheet.status', 'Submitted');
$query->where('user.supervisors.id', '<>', 'timesheet.user_id');
})->get();
...但是,上面的代码会抛出错误;
[2016-04-12 11:45:15] local.ERROR:异常'PDOException',消息'SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'user.supervisors.id' 'in /home/vagrant/Code/App/public/vendor/laravel/framework/src/Illuminate/Database/Connection.php:319
我如何实现我的需要?