Php 拉威尔从亲戚那里摘田地

Php 拉威尔从亲戚那里摘田地,php,laravel,laravelcollective,laravel-collection,Php,Laravel,Laravelcollective,Laravel Collection,我有一个卖家对象,它有一个相关的用户。我需要填写一份从LaravelCollective中选择的表格,因此我需要制作如下内容: {!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!} $s = Seller::join('users', 'sellers.user_id', '=', 'users.i

我有一个卖家对象,它有一个相关的用户。我需要填写一份从LaravelCollective中选择的表格,因此我需要制作如下内容:

{!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!}
$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',
];
问题是我无法从关系(user.first\u name)中获取字段

我怎么做

更新

我想避免这样做

<?php 
    $sellers = [];

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

您可以使用以下方法实现此功能(&C):

{!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!}
$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',
];
这将产生如下数组:

{!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!}
$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',
];
希望这有帮助

您可以使用Laravel的方法:

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

另一种方法是定义关系中需要哪些列。如果您总是只需要给定关系上的这些列,这是很好的。例如:

Class Seller extends Model {
    ...

    public function user()
    {
        return $this->hasOne(user::class, 'id')
            ->select('id', 'first_name');
    }
}

尝试下面的解决方案,它的工作对我来说,因为我正在使用laravel 8


$sellers=Seller::with('user')->get()->pulk('user.*.first_name')

调用
pulk()
时,参数是反向的。要获得您建议的结果,您必须调用:
pluck('users.id','sellers.id')
。第一个参数是要提取的值,第二个参数是用作每个提取值的数组键的值。