Я создал отношения вроде этого:
Type.City.Street.House.Apartment
В этом отношении квартира должна зависеть одновременно от Дома и Типа, поэтому результат запроса sql должен быть таким:
select * from `apartments` where `apartments`.`house_id` in ('1', '2', '3') and `type_id` = '777'
Проблема в том, что отношение HasManyThrough рассматривает только два уровня, и с ним невозможно добраться до самой первой модели.
Пожалуйста, посоветуйте, как это можно сделать?
Определения моих моделей:
class Type extends Model {
public function city() {
return $this->hasMany('App\City');
}
}
class City extends Model {
public function street() {
return $this->hasMany('App\Street');
}
}
class Street extends Model {
public function house() {
return $this->hasMany('App\House');
}
}
class House extends Model {
public function Apartment() {
return $this->hasMany('App\Apartment');
//->where('type_id', '=' type.id) ?????
}
}
class Apartment extends Model {
public $fillable = ['house_id', 'type_id']
}