2015-01-15 57 views
0

是否可以在單個表列中有多個別名?如果我這樣做在MySQL中我得到的結果我想:帶有Eloquent ORM的單個表列的多個別名

SELECT name, name AS label, name AS value FROM `tags` WHERE 1 

但是,如果我嘗試做:

$query->select('name, name AS label, name AS value'); 

..它告訴我SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name,' in 'field list' (SQL: select名,as AS from標籤where標籤. deleted_at is null group byorder byasc)

如果我嘗試做

$query->select('name AS name, name AS label, name AS value'); 

..它不會拋出一個錯誤,而只會給我一個別名(名稱)。我如何使用雄辯的ORM來實現這一點?由於

+0

嘗試使用'selectRaw',而不是'select' – xAoc

回答

0

試試這個:

$query->select(DB::raw('name AS name, name AS label, name AS value'));

Link of Laravel Doc

1

當您嘗試選擇laravel做這樣的:

public function select($columns = array('*')) 
{ 
    $this->columns = is_array($columns) ? $columns : func_get_args(); 

    return $this; 
} 

而當你把這個字符串,laravel認爲你通過幾個ARGS ,所以你可以這樣做:

$query->select(['name AS name', 'name AS label', 'name AS value']); 

或者

$query->selectRaw('name AS name, name AS label, name AS value'): 

或者

$query->select(DB::raw('name AS name, name AS label, name AS value')); 

還是喜歡說@Jarek Tkaczyk

$query->select('name as name', 'name as label', 'name as value'); 
+1

最直接的是,要麼陣列,就像你的第一部分,或字符串'選擇('col','col as alias_1','col as alias_2')',所以添加它。另外,值得注意的是:你必須使用'as'來別名列**,否則它將不起作用:'select('col alias') - > wrong',儘管在xSQL中是可行的。 –