使用laravel创建联接表

我正在使用Laravel6。我想创建一个名为meeting_user的联接表,该表应该连接表meetingsusers。考虑到用户可以参加很多会议,而一个会议可以有很多用户。

用户:

Schema::create('users',function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->string('surname');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('username')->unique();
    $table->string('password');
    $table->enum('permission',array(0,1,2));
    $table->enum('is_active',1))->default(1);
    $table->rememberToken();
    $table->timestamps();
});

会议

Schema::create('meetings',function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->text('description');
    $table->string('id_room');
    $table->date('date');
    $table->time('start_hour');
    $table->time('end_hour');
    $table->enum('is_active',1))->default(1);;
    $table->timestamps();
    $table->foreign('id_room')->references('id')->on('rooms');
});

我想通过迁移来创建该表,此外,当用户创建与许多用户的会议并向“会议”表中插入新行时,即使是新的“ meeting_user”表也要动态地创建,填写添加新行。 Laravel有办法做到这一点吗?

wmwm9433 回答:使用laravel创建联接表

您必须创建第三个表 称为“ user_meetings” 它将是

$table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('meeting_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users')- 
    >onDelete('cascade');
            $table->foreign('meeting_id')->references('id')->on('meetings')- 
    >onDelete('cascade');

然后将关系放入“用户”模型

   public function meetings()
    {
        return $this->belongsToMany(Meeting::class,'user_meetings','user_id','meeting_id');
    }

和“会议”模型中的关系

 public function users()
    {
        return $this->belongsToMany(User::class,'meeting_id','user_id');
    }

,控制器中“添加”会议的代码将为

 $user->meetings()->attach($request->meetings);
        return redirect()->back()->with('success','successfull');

和“修改”

   $checker->meetings()->sync($request->meetings);
                return redirect()->back()->with('success','successfull');

并“删除”

$checker->meetings()->detach();

我希望这些步骤对您有帮助

本文链接:https://www.f2er.com/3049708.html

大家都在问