【问题标题】:SelectRaw in blade template to create dropdown list刀片模板中的 SelectRaw 以创建下拉列表
【发布时间】:2017-04-18 10:06:03
【问题描述】:

一个数据库表有两个字段 first_name 和 last_name。 如果我想填写下拉框,我可以使用以下代码:

{!! Form::select('driver_id',  App\Driver::pluck('first_name','id'), null, ['class' => 'form-control'])  !!} 

但如果我想连接两个文件,我应该在我的模型上使用 SelectRow:

{!! Form::select('driver_id',  App\Driver::select(DB::raw("CONCAT(first_name,' ', last_name) AS full_name, id"))->pluck('full_name','id'), null, ['class' => 'form-control'])  !!} 

但是这个解决方案不起作用,这就是我得到的:

<select class="form-control" name="driver_id">
<option value="">Autista...</option>
<option value="11"> </option>
<option value="12"> </option>
<option value="13"> </option>
.....
</select>

也就是说.... 选择没有获得“full_name”字段,而是获得了“id”字段。 如何解决?

【问题讨论】:

  • 您可以在控制器中创建一个 concat 数组,然后将其传递给视图刀片中的选择标签
  • 当然。但是如何让这个优雅的解决方案发挥作用呢?
  • 请将您的解决方案发布为您自己问题的答案,而不是问题本身。谢谢。

标签: php mysql laravel eloquent


【解决方案1】:

我想你可以试试这个:

{{ Form::select('driver_id',  App\Driver::select(DB::raw("CONCAT(first_name,' ', last_name) AS full_name, id"))->lists('full_name','id'), null, ['class' => 'form-control']) }}

希望这对你有用!

【讨论】:

  • 列表功能在 laravel 5.3 版本中不可用。
  • 谢谢。但是收集方法 ->lists() 已被弃用。 > Collection、查询构建器和 Eloquent 查询构建器对象的列表方法已重命名为 pluck。方法签名保持不变。
【解决方案2】:

在你的刀片文件中试试这个:

App\Driver::select(
        DB::raw("CONCAT(first_name,' ',last_name) AS full_name"),'id')
        ->pluck('full_name', 'id');

【讨论】:

  • 没有。无论如何,问题是别名字段名称。 Pluck 函数找不到字段“full_name”。另请参阅laravel camel_case() 了解更多信息。
  • 好的..很好..谢谢
【解决方案3】:

解决方案

问题在于别名字段名称“full_name”中的下划线字符。

这段代码运行良好:

App\Driver::selectRaw("CONCAT(first_name,' ',last_name) as fullname ,id")->pluck("fullname", "id")

谢谢大家。

【讨论】:

  • 好的很好...谢谢你
猜你喜欢
  • 2012-12-18
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 2014-03-01
相关资源
最近更新 更多