使用 laravel 创建连接的 table

Creating a joined table with laravel

我正在使用 Laravel 6。我想创建一个名为 meeting_user 的连接 table,它应该连接 tables 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', array(0, 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', array(0, 1))->default(1);;
    $table->timestamps();
    $table->foreign('id_room')->references('id')->on('rooms');
});

我想通过迁移创建此 table,而且我希望当用户创建与许多用户的会议并因此向 "meetings" table,即使是新的"meeting_user" table 也会在添加新行时被动态填充。有没有办法用 Laravel 做到这一点?

你必须创建第三个 table 例如叫 "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');

然后将关系放入 "user" 模型

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

和 "meeting" 模型中的关系

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

控制器中 "adding" 会议的代码将是

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

和"edit"

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

和"delete"

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

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