【问题标题】:laravel proplem with Model::with appended column带有 Model::with 附加列的 laravel 问题
【发布时间】:2018-12-14 11:12:03
【问题描述】:

我尝试使用 Model::with 添加附加列

$pitchChech =  Pitch::with(['prices'=>function ($query){
            $query->select('*',\DB::Raw("(select sum(HOUR(TIMEDIFF(valid_to ,valid_from))) from pitch_price as xpitch_price where pitch_id = pitch_price.pitch_id ) as x "))
            ->whereRaw(" x < ?",[24]);
        }])->get();
      dd($pitchChech);

我有这个输出

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'x' in 'where clause'  

我不明白我使用 laravel 5.1 有什么问题,但我认为 ut 没有问题

【问题讨论】:

  • 将-&gt;get()更改为-&gt;toSql()并显示结果
  • 当我把它改成Sql时它只是调用Pitch模型
  • with() 用于加载关系。不适用于自定义 SQL。您可能想查看addSelect、selectRaw、join 等。
  • 我 traid $pitchChech = Pitch::whereHas('prices',function ($query){ $query-&gt;select("*",\DB::Raw("(select sum(HOUR(TIMEDIFF(valid_to ,valid_from))) from pitch_price as xpitch_price where pitch_id = pitch_price.pitch_id ) as total_h")) -&gt;where("total_h","&lt;", "24"); })-&gt;get(); 仍然给我同样的错误
  • @AJamal,我们重新开始怎么样,然后您发布您的架构、模型并概述您要提取的内容?

标签: mysql laravel laravel-5.1 laravel-query-builder


【解决方案1】:

对于派生列,您必须使用having():

->having('x', '<', 24)

【讨论】:

  • SQLSTATE[42S22]: 未找到列:1054 'have 子句'中的未知列 'x'
  • 请发布整个查询。
  • 全部查询
  • 你在执行什么代码?使用having() 而不是where() 从您的问题中查询?
猜你喜欢
  • 2020-03-18
  • 2022-01-05
  • 2017-02-16
  • 2017-11-29
  • 2020-05-19
  • 2020-05-19
  • 1970-01-01
  • 2017-03-13
  • 2023-03-03
相关资源
最近更新 更多