Laravel从关系中汲取领域

Ala*_*lan 27 php laravel laravel-collection laravelcollective

我有一个卖方对象,其中有一个相关的用户.我需要填写LaravelCollective的一个选择,所以我需要做这样的事情:

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

问题是我无法从关系中获取字段(user.first_name).

我该怎么做?

UPDATE

我想避免这样做......

<?php 
    $sellers = [];

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

Ami*_*pta 43

您可以使用Laravel的pluck方法:

$sellers = Seller::with('user')->get()->pluck('user.first_name', 'id')
Run Code Online (Sandbox Code Playgroud)


小智 19

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

$sellers = Seller::with('user')->get()->pluck('user.*.first_name')
Run Code Online (Sandbox Code Playgroud)


Sau*_*ogi 8

您可以通过使用join()&来实现它pluck():

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

这会给出一个像这样的数组:

[
    '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',
];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 在调用 `pluck()` 时,参数倒过来了。要获得您建议的结果,您必须调用:`pluck('users.id', 'sellers.id')`。第一个 arg 是要提取的值,第二个 arg 是用作每个提取值的数组键的值。 (2认同)