使用Laravel 4 Eloquent连接列时,列名称''无效?

Mic*_*cio 5 php sql sql-server laravel laravel-4

所以我想准备一个列表放入带有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');
    }
Run Code Online (Sandbox Code Playgroud)

然而,最好有一个空格或斜线分隔列的值,所以我这样做,就像有些人在其他地方推荐的那样:

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');
    }
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误,说SQLSTATE [42S22]:[Microsoft] [用于SQL Server的ODBC驱动程序11] [SQL Server]无效的列名称''(所以我猜测与其他地方给出的示例不同,这些分色被读取就好像它们一样列?)那么如何连接某种分离?

pat*_*cus 6

如果您的 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');
}
Run Code Online (Sandbox Code Playgroud)

QUOTED_IDENTIFIER文档在这里