【发布时间】:2021-09-27 21:24:07
【问题描述】:
您好,实际上我正在尝试创建一个应用,其中每个项目都有一些用户,即 ProjectMembers。
这是具有 TeamMembers 功能的项目模型。
class Project extends Model
{
use HasFactory;
function TeamMembers(){
return $this->hasMany(ProjectMember::class);
}
}
项目成员表架构。
Schema::create('projects_members', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('project_id')->nullable();
$table->unsignedBigInteger('user_id')->nullable();
$table->foreign('project_id')->references('id')->on('projects');
$table->foreign('user_id')->references('id')->on('users');
$table->timestamps();
});
现在要更新项目成员,我必须首先从项目成员中删除关系,然后保存新的。因为我添加了多选下拉菜单。 $request->team_members 有数组类型。
public function update(Request $request, $id)
{
// return $request;
$project = Project::findorfail($id);
$project->name = $request->project_name;
$project->details = $request->details;
$project->start_date = $request->start_date;
$project->end_date = $request->end_date;
$members = $request->team_members;
ProjectMember::where('project_id', $id)->delete();
$this->update_project_memebers($members, $project);
return redirect('/projects');
}
public function update_project_memebers($members, $project){
foreach ($members as $member_id) {
$project_member = new ProjectMember();
$project_member->project_id = $project->id;
$project_member->user_id = $member_id;
$project_member->save();
}
}
如果有人创建了有两个成员的项目,并且当他/她想要更新然后他/她可以从多选中删除一个成员,那么我必须删除关系因为他/她只选择了一个用户。
p>我认为这不是一个好习惯,所以我可以实现同样的功能。用另一种方式? 谢谢。
【问题讨论】: