mysql - 在 laravel 5.4 中调用整数的成员函数 whereBetween()?

标签 mysql where-clause laravel-5.4

我正在尝试在 2 个不同日期之间使用 whereBetween,但出现错误“在整数上调用成员函数 whereBetween()”。我正在使用 Bootstrap 日期选择器从用户那里获取 2 个日期输入。我的代码如下:

我的表格如下:

<div class="form-group">
 <label for="start_date">From:</label><input type="text" name="startdate" id="startdate">
</div>
<div class="form-group">
 <label for="enddate">To:</label><input type="text" id="enddate" name="enddate">
</div>

我的查询如下:

$client_ids = Array
              (
                 [0] => 1
                 [1] => 5
               )
$start = 2017-06-01;
$end = 2017-06-02;

$results = DB::table('lead_audit AS l')
             ->leftjoin('suppliers AS s', 's.id', '=', 'l.supplier_id')
             ->leftjoin('campaigns AS c', 'c.id', '=', 'l.campaign_id')
             ->select('s.name AS Supplier', 'c.name AS Campaign', 'l.disposition AS Disposition')
             ->count()
             ->whereBetween('l.received', [$start, $end])
             ->whereIn('l.client_id', $client_ids)
             ->groupBy('s.name', 'c.name', 'l.disposition')
             ->orderBy('s.name')
             ->orderBy('c.name')
             ->orderBy('l.disposition')
             ->get();

我在谷歌上搜索了一下,我尝试了一种“将日期包装在 Carbon 对象中”的解决方案,如下所示 在我的 Controller 上,我已经把这行“使用 Carbon\Carbon;”并更改了 whereBetween 处的查询,如下所示:

->whereBetween('l.received', [new Carbon($start), new Carbon($end)])

但运气不好,再次出现与“调用整数上的成员函数 whereBetween()”相同的错误。我也怀疑上面的完整查询的顺序是否正确?有人可以帮我解决这个问题吗?谢谢。

最佳答案

问题是 ->count() 之后是 ->whereBetween()

函数 count() 为您提供 select() 的行数,因此它返回一个整数。

您必须删除 ->count() 并且查询应该可以工作。如果您想要查询中的行数,您可以执行以下操作:

$results = DB::table('lead_audit AS l')
         ->leftjoin('suppliers AS s', 's.id', '=', 'l.supplier_id')
         ->leftjoin('campaigns AS c', 'c.id', '=', 'l.campaign_id')
         ->select('s.name AS Supplier', 'c.name AS Campaign', 'l.disposition AS Disposition')
         ->whereBetween('l.received', [$start, $end])
         ->whereIn('l.client_id', $client_ids)
         ->groupBy('s.name', 'c.name', 'l.disposition')
         ->orderBy('s.name')
         ->orderBy('c.name')
         ->orderBy('l.disposition')
         ->get();
$num_rows = count($results);

The query builder also provides a variety of aggregate methods such as count, max, min, avg, and sum. You may call any of these methods after constructing your query.
source: https://laravel.com/docs/5.4/queries#aggregates

关于mysql - 在 laravel 5.4 中调用整数的成员函数 whereBetween()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44322169/

相关文章:

php - 将一个项目添加到 SQL 并立即获取自动递增 id

mysql - 如何通过命令行导出数据库?

javascript - DexieJS (indexedDB) 链接多个 .where 子句

mysql - SQL:只有当该值为空时,如何才能更新列上的值?

vue.js - Vue + Laravel 5.4 + 混合 - "Cannot Get/"

php - Laravel 排除投票的帖子

php - 如果存在mysql错误

mysql - Rails/Active Record has_many 通过关联 - 获取记录

sql - 初级 SQL 部分 : avoiding repeated expression

php - ReflectionException 类 LoginController 不存在