我需要向MySql添加三个表,但是我不知道如何组织它们。
我的表格是:
还有我的亲戚们:
内部公寓可以有多个floor
曲面是在公寓之后进入的,所以我不能使用曲面楼层作为我的公寓楼层。
目前,我有公寓桌和落地桌,其中有一张枢轴桌(多对多)。
在Mysql中,处理这个问题的最好方法是什么?在拉瓦尔之后呢?
感谢您的帮助!
编辑:我到目前为止在laravel上的工作(只有落地桌和公寓桌)
在Apartment.php中:
public function floors(){
return $this->belongsToMany('App\Models\Copro\Floor');
}
在Floor.php中:
public function apartments()
{
return $this->belongsToMany('App\Models\Copro\Apartment');
}
编辑2:我到目前为止的迁移:
Schema::create('surfaces', function (Blueprint $table) {
$table->increments('id');
$table->integer('apartment_id')->unsigned()->index();
$table->foreign('apartment_id')->references('id')->on('apartments')->onDelete('cascade');
$table->integer('floor_id')->unsigned()->index();
$table->foreign('floor_id')->references('id')->on('floors')->onDelete('cascade');
$table->decimal('surface',65, 3);
});
Schema::create('apartments', function (Blueprint $table) {
$table->increments('id');
$table->string('nom');
});
Schema::create('floors', function(Blueprint $table)
{
$table->increments('id');
$table->string('nom');
});
Schema::create('apartment_floor', function(Blueprint $table){
$table->increments('id');
$table->integer('apartment_id')->unsigned()->index();
$table->integer('floor_id')->unsigned()->index();
$table->foreign('apartment_id')->references('id')->on('apartments')->onDelete('cascade');
$table->foreign('floor_id')->references('id')->on('floors')->onDelete('cascade');
});
发布于 2018-06-28 03:43:13
我可以在Laravel中想到以下类型的关系,虽然我没有创建示例代码,但它应该会有所帮助。
公寓模型:
public function floors() {
return $this->belongsTo('App\Models\Copro\Floor', 'floor_id', 'id');
} /* Many apartments belong to single floor. Single floor can have many apartments.*/
public function surfaces() {
return $this->hasMany('App\Models\Copro\Surface', 'surface_id', 'id');
} /* Single apartment has many surfaces */
楼层模型:
public function apartments() {
return $this->hasMany('App\Models\Copro\Apartment', 'apartment_id', 'id');
} /* A floor has many apartments */
public function surfaces() {
return $this->hasMany('App\Models\Copro\Surface', 'surface_id', 'id');
} /* A floor has many surfaces */
曲面模型:
public function floor() {
return $this->belongsTo('App\Models\Copro\Floor', 'floor_id', 'id');
} /* Surfaces belong to single floor */
public function apartment() {
return $this->hasMany('App\Models\Copro\Apartment', 'apartment_id', 'id');
} /* Surfaces belong to single apartment */
然而,,如果你能在同一问题上提供表模式或迁移模式,答案将更加清晰。此外,您还可以提到您期望和想要执行的SQL查询类型。谢谢。希望这能有所帮助。
编辑:
我现在还没有安装PHP,但是下面的模式对我们是有用的,至少可以给我们更新更好的想法。
Floor:
id
flr_number
Apartment:
id
apt_number
flr_id
Surface:
id
apt_id
surface
地板将有许多通过表面的公寓。因此,我们可以在楼层模型中引入以下方法。
public function surfaces() {
return $this->hasManyThrough(
'App\Models\Copro\Surface',
'App\Models\Copro\Apartment',
'flr_id', /* Foreign key of Apartments table */
'apt_id', /* Foreign key of Surfaces table */
'id', /* Local key of Floors table */
'id' /* Local key of Apartments table */
);
}
https://stackoverflow.com/questions/51069802
复制相似问题