【问题标题】:Eloquent ORM: count() remove the select(...)雄辩的 ORM:count() 删除 select(...)
【发布时间】:2023-04-10 22:44:01
【问题描述】:

我在 Laravel-4 之外使用 Eloquent ORM,并且正在构建一个自定义分页器。

首先,我使用 Fluent Query Builder 构建查询。我想使用count() 获取查询可以返回的结果数,然后使用take(x)skip(y) 进行自定义分页。我需要在take()->skip()->get() 之前执行count(),这样我就不会超出页面范围。问题是当我在查询中使用count() 方法时,它似乎删除了我之前添加的任何select

我将问题隔离到这个简单的例子中:

$query = DB::table('companies')
           ->join('countries','companies.country_id','=','countries.id')
           ->select(
               'companies.name as company_name',
               'countries.name as country_name'
           );

$nbPages = $query->count();
$results = $query->get();

//$results contains all fields of both tables 'companies' and 'countries'

如果我颠倒计数的顺序并得到,它工作正常:

$results = $query->get();
$nbPages = $query->count();

//$results contains only 'company_name' and 'country_name'

问题:有没有更优雅的方式来使用这样的东西:

$tmp = clone $query;
$nbPages = $tmp->count();
$results = $query->get();

【问题讨论】:

    标签: php laravel-4 eloquent


    【解决方案1】:

    很遗憾,没有。关于该问题在 github 上打开 issue:https://github.com/laravel/framework/pull/3416

    【讨论】:

      猜你喜欢
      • 2018-10-22
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 2022-01-21
      • 2015-06-25
      • 2018-09-23
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多