因此,我想准备一个列表以放入带有laravel的组合框,并且我想使用级联来连接3列的值,并且我可以通过此实现
public function deviList() {
return Device::select(DB::raw('CONCAT(DESC, OS, OS_V) AS FullDesc'), 'DEVI_ID')
->where('STATUS', 2)
->orderBy('DESC')
->lists('FullDesc', 'DEVI_ID');
}
但是最好用空格或斜杠分隔各列的值,所以我这样做是一样的,就像在其他地方推荐的人一样:
public function deviList() {
return Device::select(DB::raw('CONCAT(DESC," ",OS," ",OS_V) AS FullDesc'), 'DEVI_ID')
->where('STATUS', 2)
->orderBy('DESC')
->lists('FullDesc', 'DEVI_ID');
}
但是,我收到一条错误消息,说 SQLSTATE [42S22]:[Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server]无效的列名''(因此,我猜想与其他地方给出的示例不同,这些分隔被读取为(如果它们是列?)那么如何连接某种分隔呢?
最佳答案
如果您的SQL Server启用了QUOTED_IDENTIFIER
,则双引号将用于标识对象,而不是字符串文字。在这种情况下," "
不会是表示空格的字符串,而将是由空格表示的对象(列),该对象不存在。
尝试在SQL语句中切换引号:
public function deviList() {
return Device::select(DB::raw("CONCAT(DESC,' ',OS,' ',OS_V) AS FullDesc"), 'DEVI_ID')
->where('STATUS', 2)
->orderBy('DESC')
->lists('FullDesc', 'DEVI_ID');
}
QUOTED_IDENTIFIER
文档here。