У меня есть следующие отношения:
Ферма -> hasOne -> Адрес следующим образом:
/** * \App\Address associated to the current farm. * * @return \App\Address */ public function address() { return $this->hasOne('\App\Address'); }
… затем Address -> attribTo -> Country:
public function country() { return $this->belongsTo('\App\Country','country_id','id'); }
… и я хотел бы получить модель страны и получить все связанные фермы, используя country_id в адресной таблице. Я определил hasManyThrough следующим образом:
/** * Get all of the farms for the country. */ public function farms() { return $this->hasManyThrough('App\Farm', 'App\Address'); }
но он генерирует следующий SQL:
select `farms`.*, `addresses`.`country_id` from `farms` inner join `addresses` on `addresses`.`id` = `farms`.`address_id` where `addresses`.`country_id` = 1
SQL ищет адрес_ид в таблице ферм. Но ферма не относится к «адресу». Есть ли все равно, чтобы исправить это, или я застрял, нуждаясь в изменении моей схемы?
Большое спасибо.