Php 如何在select2-laravel中放置两列的值
我有一张由select2.js提供服务的表格 在我的控制器中,我使用选择内容生成一个var:Php 如何在select2-laravel中放置两列的值,php,laravel,laravel-5.1,jquery-select2,Php,Laravel,Laravel 5.1,Jquery Select2,我有一张由select2.js提供服务的表格 在我的控制器中,我使用选择内容生成一个var: $gau = array(null => 'Gautor...') + Gauthor::orderBy('surname','asc')->lists('surname', 'id')->all(); 在我看来,我这样做: {!! Form::select('gauthor_id', $gau, Session::get('aut'), array('id'=>'gautho
$gau = array(null => 'Gautor...') + Gauthor::orderBy('surname','asc')->lists('surname', 'id')->all();
在我看来,我这样做:
{!! Form::select('gauthor_id', $gau, Session::get('aut'), array('id'=>'gauthor_id')) !!}
在我的表中有两列:姓氏
和名字
在我的Gauthor
模型中,我将它们合并如下:
public function getFullnameAttribute()
{
return $this->firstnames . ' ' . $this->surname;
}
以便在我的视图文件中以这种方式显示值$o->fullname
我想做什么:
我想在我的选择框中看到全名。如何在不在我的数据库中创建另一个全名列的情况下执行此操作
我所尝试的:
我试图在控制器中将姓氏
替换为全名
,但这太容易了。我收到SQL错误:找不到列“fullname”
谢谢试试这段代码,我没有测试它
Gauthor::selectRaw('id, CONCAT(firstnames, " ", surname) as fullname')
->orderBy('fullname','asc')->lists('fullname', 'id');
selectRaw('id,CONCAT(firstnames,“,姓氏)作为全名')
将选择id
和fullname
(按firstname和姓氏为CONCAT)。然后你可以通过->list('fullname','id')
列出这两个列表,一个额外的->get()
完成了这个魔术。完整的行应该如下所示:
$gau = array(null => 'Gautor...') + Gauthor::orderBy('surname','asc')->get()->lists('fullname', 'id')->all();
如果要包括模型的id
,则需要在select2
调用中包括以下选项:
$(document).ready(function() {
$("select").select2({
templateResult: function(state) {
if (!state.id) { return state.text; }
return state.id + ' - ' + state.text;
}
});
});
与此相反:
$("select").select2();
:)是的,为了获得最佳实践,您可以在控制器或存储库中执行此查询(如果您使用的是存储库模式)。:)不幸的是,它不起作用。我得到空的选择。我尝试过使用和不使用
->all()
标记,您是否有选择选项,但选项文本全名
为空?或者您无法在选择中获得任何选项(无选项)?选择似乎包含所有选项,但没有文本-但我可以选择空选项。总之,外面有人帮了我。见下面我的答案。