【发布时间】:2021-05-18 06:32:17
【问题描述】:
我正在使用 Laravel 7。
我有三个具有多对多关系的表。这些表是users、task_user 和tasks。
模型有以下关系:
任务.php:
public function users()
{
return $this->belongsToMany('App\User')
->withPivot('user_id', 'task_id')
->withTimestamps();
}
TaskUser.php:
public function task()
{
return $this->belongsTo('App\Task');
}
public function user()
{
return $this->belongsTo('App\User');
}
用户.php:
public function tasks()
{
return $this->belongsToMany('App\Task')
->withTimestamps();
}
这是我的控制器方法:
public function get_delayed_tasks() {
$tasks = Task::select('id', 'name', 'description', 'deadline', 'closed_at', 'status_id', 'project_id')
->whereRaw('closed_at > deadline')
->get();
return TaskResource::collection($tasks);
}
这是我的资源:
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'description' => $this->description,
'deadline' => $this->deadline,
'closed_at' => $this->deadline,
'status' => $this->status->name,
'project' => $this->project->name,
'devs' => $this->relationLoaded('users')
? $this->users->pluck('users.name')->unique()->all()
: [], //problem
];
}
不幸的是,在我收到的资源中的键 dev 中,我总是收到 [],即使我应该收到一个名称数组。
如何检索所有使用过该任务的用户?
【问题讨论】:
-
那么你应该在任务查询中加载用户,Task::with('users')
标签: laravel