Могу ли я присоединиться к связанной таблице, используя загрузку Lauravel/Eloquent?
У меня возникли проблемы с пониманием того, как работает загрузка с Lauravel/Eloquent. Я хотел бы захватить всех клиентов, сделать что-то с ними и вывести их brand_name
, У меня есть эти таблицы:
Clients
+-------------------+
| Field |
+-------------------+
| client_id |
| client_name |
| client_brand_id |
+-------------------+
Brands
+-------------------+
| Field |
+-------------------+
| brand_id |
| brand_name |
+-------------------+
В модели клиента у меня есть отношения:
public function brand()
{
return $this->hasOne('Brand', 'client_brand_id', 'brand_id');
}
И обратное в модели брендов:
public function clients()
{
return $this->hasMany('Client', 'brand_id', 'client_brand_id');
}
Я хочу сделать это, но это не работает:
foreach( Client::with( 'brand' )->get( array('client_id', 'client_name' ) ) as $client ){
echo $client->brand->brand_name;
}
1 ответ
Решение
Вы должны определить свой brand
отношения в вашем client
модель как это:
public function brand()
{
return $this->belongsTo('Brand', 'client_brand_id', 'brand_id');
}
Причина в том, что у вас отношения один-ко-многим, а не отношения один-к-одному между клиентами и брендами.
Кроме того, вам нужно получить полную модель для загруженных отношений, например:
foreach( Client::with( 'brand' )->get() as $client )
{
echo $client->brand->brand_name;
}