【问题标题】:Laravel: How to add a column to a query?Laravel:如何在查询中添加列?
【发布时间】:2014-12-18 12:13:32
【问题描述】:

我需要你的帮助。我正在尝试为特定 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 from programs where programs.id = ?限制1

我明白了:

programs 中选择name programs.id = ?限制1

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

【问题讨论】:

  • 您应该根据每个查询进行选择。 addSelect 的作用是为您的查询添加列。
  • 谢谢,但我不太明白。我想在查询中添加一列。每次。因此,如果我制作类似 Program::get(array('col1')) 的东西,我需要在执行查询之前自动在模型中添加另一列。
  • 我建议手动完成

标签: laravel laravel-4 eloquent


【解决方案1】:

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

我将根据偏好使用访问器实现。

【讨论】:

  • 谢谢! laravel chat 的 Lagbox 也推荐了一个评估员,我也认为这是最好的解决方案。
  • 第一个解决方案应该如何工作?如果您想要这样的东西,请使用scopes
  • 访问者谢谢!我没有放 $appends 属性难怪我的访问器无法弹出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 2023-02-21
  • 2019-02-02
  • 2017-11-15
  • 2017-06-24
  • 1970-01-01
相关资源
最近更新 更多