@Artem0071
Безработный mr. Junior

Как происходят вычисления?

Есть модели 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 делает еще по одному запросу для каждого заказа?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 2
chupacabramiamor
@chupacabramiamor
Инженегр-программист
Может вот так:
return $this->attributes['status'] = $this->data->some_param;

И в классе модели добавить не забыть
protected $appends = [ 'status' ];
Ответ написан
alexey_bille
@alexey_bille
Web developer
Можно проверить
<?
DB::enableQueryLog();
// some code ... 
DB::getQueryLog();
?>


https://stackoverflow.com/questions/18236294/how-d...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы