2016-11-16 48 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