Laravel:如何在查询中添加列?

时间:2014-12-18 03:43:47

标签: laravel laravel-4 eloquent

我需要你的帮助。我正在尝试为特定雄辩模型的每个查询添加一列。

基本上我想补充一下:

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选择*,idname =?限制1

我明白了:

  

programs选择programs id。{{1}} =?限制1

我做错了什么?我没有在网上找到任何东西,所以我真的希望你能帮助我!

1 个答案:

答案 0 :(得分:4)

正如prady00所建议的那样,你必须在你的Eloquent模型中实现一个函数:

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

实施一个访问者:

protected $appends = array('coalescename');

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

我将优先使用访问者实现。