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
属性,难怪我的访问者无法弹出