我想从代表数据透视表的资源中检索用户的名称和任务的名称,即task_user. 但是我想使用 Laravel 的资源来做到这一点。
这是TaskUserResource中的代码:
public function toArray($request)
{
return [
'id' => $this->id,
'task_id' => $this->task_id,
'user_id' => $this->user_id,
'task_name' => Task::where('id', $this->task_id)->pluck('name')->first(), //to edit
'user_name' => User::where('id', $this->user_id)->pluck('name')->first(), //to edit
];
}
代码正常工作。顺便说一句,我问自己这是否是一种做得更好的方法,因为我认为用表的每个返回行雄辩地进行两次查询是很昂贵的task_user。表users和tasks有一个多对多的关系。
用户.php:
public function tasks()
{
return $this->belongsToMany('App\Task')->withTimestamps();
}
任务.php:
public function users()
{
return $this->belongsToMany('App\User')->withTimestamps();
}
这是我的控制器:
class HomeController extends Controller
{
public function index()
{
$projects = Project::all();
$tasks = Task::all();
$tasks_users = TaskUserResource::collection(TaskUser::all()); //this is the query
$users = UserResource::collection(User::all());
return view('home')->with(['task_user'=>json_encode($tasks_users), 'tasks'=>$tasks, 'projects'=>$projects, 'users'=>json_encode($users)]);
}
}
可以帮忙?