我正在尝试制作一个任务管理系统。用户可以创建一个任务并将多个用户分配给该任务。因此任务表将有一个 user_id 用于标识创建任务的用户。有一个由 user_id 和 task_id 组成的数据透视表,以便可以将任务的受让人映射到那里。
任务表详细信息
Schema::create('tasks', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->text('content');
$table->Integer('views');
$table->foreignId('user_id')->constrained()->onDelete('cascade')->onUpdate('cascade');
$table->timestamps();
});
用户表结构
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
数据透视表 task_user 结构
Schema::create('task_user', function (Blueprint $table) {
$table->bigIncrements('id');
$table->foreignId('task_id')->constrained()->onDelete('cascade')->onUpdate('cascade');
$table->foreignId('user_id')->constrained()->onDelete('cascade')->onUpdate('cascade');
$table->string('status')->default('TODO');
$table->timestamps();
});
任务模型有这个
public function users()
{
return $this->belongsToMany('App\User');
}
用户模型有这个
public function tasks()
{
return $this->belongsToMany('App\Task');
}
现在我有一个从 UserResource 获取数据的任务资源,但我只能从数据透视表中获取数据。
return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'views' => $this->views,
'user' => UserResource::collection($this->whenLoaded('users')),
'comments' => CommentResource::collection($this->whenLoaded('comments')),
'assingnees' => $this->whenPivotLoaded('users', function () {
return $this->users->pluck('pivot.user_id')->unique()->all();
}),
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
我想要数据透视表中assignees
的用户详细信息和任务表中的用户详细信息user
。但最终,我最终获得了数据透视表用户user
,并且assignees
在 JSON 响应中没有获得任何变量。如何在单独的变量中获取两个用户数据?