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();