I have the following Eloquent relationships where
Farm -> hasOne -> Address as follows :
/**
* \App\Address associated to the current farm.
*
* @return \App\Address
*/
public function address()
{
return $this->hasOne('\App\Address');
}
...then Address -> belongsTo -> Country as follows:
public function country()
{
return $this->belongsTo('\App\Country','country_id','id');
}
... and I'm like to retrieve the Country model and get all associated farms using the country_id on the address table. I defined a hasManyThrough as follows:
/**
* Get all of the farms for the country.
*/
public function farms()
{
return $this->hasManyThrough('App\Farm', 'App\Address');
}
but it generates the following SQL:
select
`farms`.*,
`addresses`.`country_id`
from `farms`
inner join `addresses` on `addresses`.`id` = `farms`.`address_id`
where `addresses`.`country_id` = 1
The SQL is looking for an address_id on the farms table. But the farm does not "belongTo" an address. Is there anyway to correct this or am I stuck needing a change to my schema?
Many thanks.