关于 Laravel 5.7 中 Pluck 结果的问题

Posted

技术标签:

【中文标题】关于 Laravel 5.7 中 Pluck 结果的问题【英文标题】:Question About Pluck Results in Laravel 5.7 【发布时间】:2019-05-10 03:25:19 【问题描述】:

我对 Laravel 中的 pluck 方法有疑问。如何在列表中获得以下结果?

Name + Lastname + id

我在控制器中使用此行命令

线路:$choferes

public function index()

    $asignaciones = Asignacion::orderBy('id', 'ASC')->get();
    $choferes = Chofer::orderBy('id', 'ASC')->pluck('nombre', 'id');
    $dueños = Dueño::orderBy('id', 'ASC')->pluck('nombre', 'id');
    $asignaciones->each(function ($asignaciones)
    
        $asignaciones->chofer;
        $asignaciones->dueno;
    );

    return view('admin.asignaciones.index')
        ->with('asignaciones', $asignaciones)
        ->with('choferes', $choferes)
        ->with('dueños', $dueños);

列表中的结果:

1 => "name 1"
2 => "name 2"

但是,我需要合并:namelastname。它需要是一个列表。如何在我的视图中显示它?

<div class="col-xs-6">
    !! Form::label('chofer_id','Lista de Choferes') !!
    !! Form::select('chofer_id[]', $choferes, null,
        ['class'=>'form-control select_chofer',
        'multiple',
        'required','id'=>'list_chofer']) !!
</div>

我有这个结果:

result

谢谢!

【问题讨论】:

【参考方案1】:

在您的Chofer 模型中定义

public funcion getFullNameAttribute()

    return $this->attributes['first_name'] + ' ' + $this->attributes['last_name'];
  

在控制器中使用这个

$choferes = Chofer::orderBy('id', 'ASC')->get(['id`, ...])->pluck('full_name', 'id');

【讨论】:

以上是关于关于 Laravel 5.7 中 Pluck 结果的问题的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 pluck() 来自 Eloquent 模型集合的多个属性

laravel的pluck用法

关于 laravel 关系和性能的问题

Laravel:使用模型查询构建器获取重复记录的结果

将 Laravel 5.4 升级到最新版本 (5.7)

忘记不修改原始集合 Laravel 5.7