【问题标题】:Where clause not working. LaravelWhere 子句不起作用。拉拉维尔
【发布时间】:2016-06-30 07:24:55
【问题描述】:

我正在尝试计算使用多个 where 查询的查询的结果。但这似乎不起作用。 我的语法是:

$partialpaidquery=['month' => $maina];

$partialpaid=Bill::where($partialpaidquery)->where('paid','!=',0)->where('fee_status','<','amount')->count();

直到where('paid','!=',0) 的where 子句似乎有效,但第三个无效。这里有什么问题?它实际上应该返回 1。但它返回的是 0。

【问题讨论】:

  • 你能打印像dd(DB::getQueryLog());这样的查询吗?
  • 不,我不知道。我试过了,但它返回的是空数组 []。

标签: laravel-5.2 where-clause


【解决方案1】:

您似乎使用了错误的查询: 您正在比较 &lt; 字符串 'amount' 而不是使用变量 $amount

如下:

$partialpaidquery=['month' => $maina];

$partialpaid=Bill::where($partialpaidquery)->where('paid','!=',0)->where('fee_status','<',$amount)->count();

【讨论】:

  • 实际上金额是我表的列之一。我正在尝试比较单个表的两列。
  • 您正在比较同一行中两列的值,因此您应该运行 whereRaw $partialpaid=Bill::where($partialpaidquery)-&gt;where('paid','!=',0)-&gt;whereRaw('fee_status &lt; amount')-&gt;count();
【解决方案2】:

使用你的第三个 where

->whereRaw('fee_status < amount')

因为您使用它的方式,金额列被解释为字符串而不是列。

【讨论】:

    猜你喜欢
    • 2018-08-19
    • 1970-01-01
    • 2017-09-02
    • 2016-03-19
    • 2018-10-18
    • 2018-09-11
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多