因此,我想准备一个列表以放入带有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

10-05 20:28
查看更多