2016-11-16 78 views
8

我有一個有相關用戶的賣方對象。我需要填補LaravelCollective一個選擇,所以我需要做這樣的事情:Laravel從關係中抽取字段

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

的問題是,我不能把從關係(user.first_name)領域。

我該怎麼辦呢?

UPDATE

我想避免這樣做...

<?php 
    $sellers = []; 

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

回答

15

您可以使用Laravel的pluck方法:

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

您可以通過使用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', 
]; 

希望這會有所幫助!

+0

您在您的來電'動物內臟()'有爭論倒退。爲了得到你所建議的結果,你必須調用:'pluck('users.id','sellers.id')'。第一個參數是要採集的值,第二個參數是每個採集值用作數組鍵的值。 – Soulriser