为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel - 从多对多关系获取数据

Laravel - 从多对多关系获取数据

PHP
温温酱 2023-08-06 14:51:54
我正在构建一个小型应用程序,以便在 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()



查看完整回答
反对 回复 2023-08-06
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信