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

我正在构建一个小型应用程序,以便在 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');

}


你们能帮忙吗?先感谢您


温温酱
浏览 94回答 1
1回答

海绵宝宝撒

尝试这个: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()
打开App,查看更多内容
随时随地看视频慕课网APP