2016-11-16 29 views
8

Mam obiekt sprzedającego, który ma powiązanego użytkownika. Muszę wypełnić select z LaravelCollective więc muszę zrobić coś takiego:Laravel zrzuć pola z relacji

{!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!} 

Problem polega na tym, że nie mogę wziąć ze stosunków pól (user.first_name).

Jak mogę to zrobić?

UPDATE

Chcę, aby uniknąć w ten sposób ...

<?php 
    $sellers = []; 

    Seller::with('user')->get()->each(function ($seller) use (&$sellers) { 
     $sellers[$seller->id] = $seller->user->first_name; 
    }); 
?> 

Odpowiedz

15

Można użyć pluck metodę laravel jako:

$sellers = Seller::with('user')->get()->pluck('user.first_name', 'id') 
4

Można to osiągnąć za pomocą join() & pluck() takiego:

$s = Seller::join('users', 'sellers.user_id', '=', 'users.id') 
      ->pluck('sellers.id', 'users.id') 
      ->all(); 

To dałoby tablica taka jak ta:

[ 
    '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', 
]; 

Mam nadzieję, że to pomoże!

+0

mieć argumenty do tyłu w wywołaniu 'Pluck()'. Aby uzyskać sugerowane wyniki, musisz zadzwonić: 'pluck ('users.id', 'sellers.id')'. Pierwszy argument jest wartością do skubania, drugi argument jest wartością używaną jako klucz tablicy na wyskubaną wartość. – Soulriser