我正在构建一个小型应用程序,以便在 Laravel 7 中试验多对多关系。该应用程序与项目和用户(多对多)有关。经过身份验证的用户可以创建新项目。每个项目都有自己的页面。在项目页面上,会呈现一个列表,其中包含作为该项目成员的每个用户的名称,每个名称旁边都有一个按钮,用于从该项目中删除特定用户/成员。现在,我陷入了“删除用户”功能。我不明白如何获取列表中每个用户的 id,并将其传递给将“分离”多对多关系的函数。我的文件如下:迁移:用户表:public function up(){ Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->boolean('is_admin')->nullable(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); });}项目表:public function up(){ Schema::create('projects', function (Blueprint $table) { //primary key $table->bigIncrements('id'); //foreign keys columns $table->unsignedBigInteger('user_id'); //normal table columns $table->string('title')->unique(); //created_at and updated_at columns $table->timestamps(); //add constraints $table->foreign('user_id') ->references('id') ->on('users') ->onDelete('cascade'); });}项目_用户_表(数据透视表):public function up(){ Schema::create('project_user', function (Blueprint $table) { $table->foreignId('project_id')->constrained(); $table->foreignId('user_id')->constrained(); $table->timestamps(); });}型号:用户.php:public function projects(){ return $this->belongsToMany('App\Project');}项目.php:protected $fillable = ['name'];public function members(){ return $this->belongsToMany('App\User');}public function creator(){ return $this->belongsTo('App\User', 'user_id', 'id');}你们能帮忙吗?先感谢您
1 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
尝试这个:
public function remove_user(Project $project, User $member)
{
$project->members()->detach($member->id);
return redirect('/projects/'.$project->id);
}
因为您在路线中传递了两个参数。因此,您将获得一个模型实例Project和一个User模型实例。然后只需访问关系并访问detach()方法$user->id即可完成工作。您可以通过在方法中传递 ids 数组来分离多个用户,或者通过不带参数detach()调用来从项目中删除所有用户。detach()
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消