使用 laravel 创建连接的 table
Creating a joined table with laravel
我正在使用 Laravel 6。我想创建一个名为 meeting_user
的连接 table,它应该连接 tables meetings
和 users
。这是考虑到一个用户可以参加很多会议,而一个会议可以有很多用户。
用户:
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();
希望这些步骤对您有所帮助
我正在使用 Laravel 6。我想创建一个名为 meeting_user
的连接 table,它应该连接 tables meetings
和 users
。这是考虑到一个用户可以参加很多会议,而一个会议可以有很多用户。
用户:
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();
希望这些步骤对您有所帮助