2014-12-18 2 views
0

Мне нужна помощь. Я пытаюсь добавить столбец к каждому запросу конкретной модели красноречия.Laravel: Как добавить столбец в запрос?

В основном я хочу добавить следующее:

COALESCE(name, network_name) AS name 

Важно, чтобы сохранить выбранные ранее поля, так что я попробовал это в моей модели:

public function newQuery() 
{ 
    $query = parent::newQuery()->addSelect('name'); // it's name only for testing purposes 

    return $query; 
} 

Но это не добавляет столбец. Он заменяет его. Так что вместо того, чтобы получить что-то вроде:

выберите *, name из programs где programs. id =? ограничение 1

я получаю:

выберите name из programs где programs. id =? предел 1

Что я делаю неправильно? Я ничего не нашел в сети, поэтому я действительно надеюсь, что ты сможешь мне помочь!

+0

Вы должны выбрать из одного запроса. Что добавит addSelect, так это добавить столбцы в ваш запрос. – prady00

+0

Спасибо, но я не совсем понимаю. Я хочу добавить столбец в запрос. Каждый раз. Поэтому, если я делаю что-то вроде программы :: get (array ('col1')), мне нужно автоматически добавить еще один столбец в модель до того, как запрос будет выполнен. – sleepless

+0

Я бы предложил сделать это вручную – prady00

ответ

4

Как было предложено prady00, вы должны реализовать функцию в красноречивых модели как таковой:

public static function getMore() 
{ 
    return self::select('*',DB:Raw('COALESCE(name, network_name) AS coalesce_name'))->get(); 
} 

ИЛИ

Реализовать Accessor:

protected $appends = array('coalescename'); 

public function getCoalescenameAttribute() 
{ 
    return ($this->name !== '' ? $this->name : $this->network_name); 
} 

I Пойдем с реализацией аксессуаров по предпочтению.

+0

Thank you! Lagbox из чата laravel также предложил эксперта, и я также считаю, что это лучшее решение. – sleepless

+0

Как это 1-е решение должно работать в любом случае? Если вы хотите что-то вроде этого, тогда используйте 'scopes' –

+0

accessor thanks! я не помещал свойство '$ appends', неудивительно, что мой аксессор не смог всплыть – gthuo

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