Php Laravel-与多个ID的关系
我有两张桌子:Php Laravel-与多个ID的关系,php,mysql,laravel,relational-database,Php,Mysql,Laravel,Relational Database,我有两张桌子: 一,房间 二,设施 设施室包含id和varchar列。 房间表包含一列(facilities_id),其中显然包含facilities表中的id。在该列中,我有一个多值,用逗号(1,3,4)分隔 在他们之间建立关系的最佳方式是什么?类似于“belongsTo”关系,但具有多ID。正如@jedrzej.kurylo所说,您需要一个多对多关系。字符串ID作为逗号分隔的列表是错误的,它违反了标准,使用起来极为不便 所以你应该重新考虑你的模型结构。就像Alexander M.说的,如果你
一,房间
二,设施 设施室包含id和varchar列。
房间表包含一列(facilities_id),其中显然包含facilities表中的id。在该列中,我有一个多值,用逗号(1,3,4)分隔
在他们之间建立关系的最佳方式是什么?类似于“belongsTo”关系,但具有多ID。正如@jedrzej.kurylo所说,您需要一个多对多关系。字符串ID作为逗号分隔的列表是错误的,它违反了标准,使用起来极为不便
所以你应该重新考虑你的模型结构。就像Alexander M.说的,如果你改变结构会更好。Eg、 :
Schema::create('facilities', function (Blueprint $table) {
$table->increments('id');
$table->string('column')->unique();
$table->timestamps();
});
Schema::create('facility_room', function (Blueprint $table) {
$table->integer('facility_id')->unsigned();
$table->integer('room_id')->unsigned();
$table->foreign('facility_id')->references('id')->on('facilities')
->onUpdate('cascade')->onDelete('cascade');
$table->foreign('room_id')->references('id')->on('rooms')
->onUpdate('cascade')->onDelete('cascade');
});
Schema::create('rooms', function (Blueprint $table) {
$table->increments('id');
$table->string('column')->unique();
$table->timestamps();
});
在您的设施模型中:
在您的房间模型中:
在我们的应用程序中:
你需要的是一个多对多的关系-看看这里,但我在一列中有id,而不是一个id的不同列,每个人都认为你必须创建不同的列,否则这是不可能的,至少据我所知,在laravel中是不可能的。
public function rooms()
{
return $this->belongsToMany(Room::class);
}
public function facilities()
{
return $this->belongsToMany(Facility::class);
}
$room = Room::find($id);
$facilities = $room->facilities();