Есть модели user, order, data (order_data)
Я делаю так:
$orders = $user->orders;
$orders->load('data');
Таким образом за один заход подтягивается "data" ко всем элементам массива orders
Но в order я хочу добавить атрибут "статус" (его нет изначально в БД), который основывается на значениях которые находятся в "data"
Таким образом я сделал следующее:
// В модели Order
public function getStatusAttribute()
{
$this->attributes['status'] = null; // показал laravel что у меня есть этот атрибут (без этого не работате)
return $this->data->some_param; // (1)
}
// В контроллере
$orders = $user->orders;
$orders->load('data'); // (2)
foreach ($orders as $order)
$order->status;
(1) вот в этом месте, а именно '->data->' - в этом случае "data" это значение которое я получил до этого в месте(2) или laravel делает еще по одному запросу для каждого заказа?