У меня есть объект продавца, у которого есть Связанный Пользователь. Мне нужно заполнить выбор из LaravelCollective, поэтому мне нужно сделать что-то вроде этого:
{!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!}
Проблема в том, что я не могу принимать поля из отношений (user.first_name).
Как мне это сделать?
ОБНОВИТЬ
Я хочу избежать этого …
<?php $sellers = []; Seller::with('user')->get()->each(function ($seller) use (&$sellers) { $sellers[$seller->id] = $seller->user->first_name; }); ?>
Вы можете использовать метод Laravel's pluck
как:
$sellers = Seller::with('user')->get()->pluck('user.first_name', 'id')
Вы можете добиться этого, используя join()
& pluck()
следующим образом:
$s = Seller::join('users', 'sellers.user_id', '=', 'users.id') ->pluck('sellers.id', 'users.id') ->all();
Это даст такой массив:
[ 'seller_id_1' => 'user_id_1', 'seller_id_2' => 'user_id_2', 'seller_id_3' => 'user_id_3', 'seller_id_4' => 'user_id_4', 'seller_id_n' => 'user_id_n', ];
Надеюсь это поможет!
Измените свой код
Seller::with(array('user'=>function($query){ $query->select('id','first_name'); }))->get();