Я могу подумать о нижеследующих типах отношений в 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-запросы вы ожидаете и хотите выполнить. Благодарю. Надеюсь, это поможет.
EDIT:
У меня сейчас не установлен 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 */
);
}