Я работаю над внутренним контентом, которому необходимо пересчитать цену, основанную на пользовательской валюте.Изменение данных модели перед отправкой ответа
Принести все необходимые записи из базы данных следующим образом:
$tasks = Task::with([
'images' => function($query){},
'price' => function($query){},
'user' => function($query){ $query->with('images');},
])->whereDoesntHave('tasksState', function($query) use ($user){
$query->where('user_id', $user->id);
$query->where('state', '<>', 0);
})->where('id', '>', $offset)->where('user_id', '<>', $user->id)->take($limit)->get();
цена модель Task состоит из валютных и значения атрибутов.
Тогда я перебирать $ задач и пересчитывать цену на основе конкретного пользователя валюты:
foreach ($tasks as $k => $task){
$price = $task->price->value;
$price = $price * $rate->getValue();
$tasks[$k]->price = $price;
//$task->price = $price;
}
После осмотра задачи, все цены пересчитываются правильно.
Однако, когда я впоследствии сериализую $ tasks и отправляю его в качестве ответа, он содержит данные по мере их поступления из базы данных - без пересчета цен.
Кто-нибудь, в чём проблема? Любые идеи будут высоко оценены!
Именно то, что я искал, спасибо! :-) – user3559787