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

Laravel:如何向查询中添加列?,laravel,laravel-4,eloquent,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; }

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

基本上我想补充一点:

COALESCE(name, network_name) AS name
保留以前选择的字段很重要,因此我在模型中尝试了以下方法:

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

    return $query;
}
但这并没有添加列。它取代了它。因此,与其得到类似于:

程序
中选择*,
名称
,其中
程序
id
=?限制1

我得到:

程序
中选择
名称
,其中
程序
id
=?限制1


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

正如prady00所建议的,您必须在您雄辩的模型中实现一个功能:

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);
}

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

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

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);
}

我将根据偏好选择访问器实现。

您应该根据每个查询进行选择。addSelect将向您的查询中添加列。谢谢,但我不太明白。我想向查询中添加一列。每一次。因此,如果我制作类似于Program::get(array('col1'))的东西,我需要在执行查询之前自动在模型中添加另一列。我建议手动执行。您应该根据每个查询进行选择。addSelect将向您的查询中添加列。谢谢,但我不太明白。我想向查询中添加一列。每一次。因此,如果我制作类似于Program::get(array('col1'))的东西,我需要在执行查询之前自动在模型中添加另一列。我建议手动执行。谢谢!laravel chat的Lagbox也建议了一名评估员,我也认为这是最好的解决方案。第一个解决方案到底应该如何工作?如果您想要类似的内容,请使用
scopes
accessor,谢谢!我没有放置
$appends
属性,难怪我的访问者不能弹出谢谢!laravel chat的Lagbox也建议了一名评估员,我也认为这是最好的解决方案。第一个解决方案到底应该如何工作?如果您想要类似的内容,请使用
scopes
accessor,谢谢!我没有放置
$appends
属性,难怪我的访问者无法弹出