Laravel Как добавить дополнительные поля в коллекцию

mstdmstd

Новичок
Подскажите, в laravel 5.4 получив список клиентов:

PHP:
$clients = Client::select( 'client_id', 'name', 'login', 'active_till_date' )->onlyActive()->orderBy( $order_by, $order_direction )->get();
Нужно для каждого найденного клиента добавить картинку, включая полный путь, урл и размер.
Получить в цикле это не сложно, но хотелось бы эти доп поля передать в этом $clients массиве или другими словами как добавить доп поля в коллекцию :
PHP:
$clients::Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
[0] => App\Client Object
(
[table:protected] => client
[primaryKey:protected] => client_id
[connection:protected] =>
[keyType:protected] => int
[incrementing] => 1
[with:protected] => Array
(
)




[perPage:protected] => 15
[exists] => 1
[wasRecentlyCreated] =>
[attributes:protected] => Array
(
[client_id] => 1
[name] => Client_1
[login] => client1
[active_till_date] => 2019-09-16
)




[original:protected] => Array
(
[client_id] => 1
[name] => Client_1
[login] => client1
[active_till_date] => 2019-09-16
)
?


Спасибо !
 

fixxxer

К.О.
Партнер клуба
У тебя eloquent-модель Client, у которой есть совершенно определенный набор полей. Добавлять туда что попало извне абсолютно некорректно.

Если то, что тебе надо добавить, зависит только от существующих полей, можно просто добавить в модель метод, ну или сделать аксессор: https://laravel.com/docs/5.4/eloquent-mutators#defining-an-accessor

Если нет, то сделай view-прослойку или хелпер-функцию для view.
 

Nabbe

Новичок
возвращается коллекция, так что можно использовать любой из методов https://laravel.com/docs/5.4/collections к примеру map обходит всю коллекцию, а push добавляет в конец коллекции новые значения


PHP:
$collection = collect([1, 2, 3, 4]);

$collection->push(5);

$collection->all();
// [1, 2, 3, 4, 5]
 
Сверху