@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 делает еще по одному запросу для каждого заказа?
  • Вопрос задан
  • 97 просмотров
Решения вопроса 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...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
4px Москва
от 100 000 до 150 000 руб.
GOR
от 80 000 до 110 000 руб.
FUTUROOM Самара
от 150 000 руб.
14 авг. 2018, в 19:03
10000 руб./за проект
14 авг. 2018, в 18:10
1000 руб./в час
14 авг. 2018, в 18:01
12000 руб./за проект