2015-01-15 2 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 by имя order by имя asc)

Если я пытаюсь сделать

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

..it не выдает ошибки, но вместо этого дает только один псевдоним (имя). Как я могу достичь этого, используя Eloquent ORM? Благодаря

+0

Попробуйте использовать 'selectRaw' вместо' select' – xAoc

ответ

1

При попытке выбора Laravel сделать это:

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

    return $this; 
} 

И когда вы передаете строку, Laravel думает, что вы прошли несколько арг , так что вы можете сделать:

$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

наиболее простым будет либо массив , как ваш 1-й кусок, или строки 'select ('col', 'col as alias_1', 'col as alias_2')', поэтому добавьте его. Кроме того, стоит отметить: вы ** должны использовать 'as' для псевдонима столбца **, иначе это не сработает:' select ('col alias') -> wrong', несмотря на то, что в xSQL будут работать. –

Смежные вопросы