使用Laravel Eloquent可以有效地计算事物存在的次数

时间:2019-06-19 13:26:40

标签: laravel eloquent

我有一个叫“租金”的表,在每一行中有“州”,“城市”,“邮政编码”列,这些列将所有房屋ID都发送到带有该信息的另一个表中。大约有3400出租。我拉每列以分别显示州,城市和邮政编码。我需要显示每个房间有多少租金。我现在正在通过ajax进行此操作,此人开始输入他们想看到的内容,并且它会自动使用计数完成操作,但是由于执行方法的原因,操作速度很慢。

$rentals_count = Rentals::where('published',1)->get();
foreach($states as $state) {
    echo $state.”-“.$rentals_count->where(‘state’,$state->id)->count();
}

以上大致是我对删除的内容所做的事情,因为它们与该问题无关。有一个更好的方法吗?它有点滞后,所以自动完成功能似乎对新用户不利。

3 个答案:

答案 0 :(得分:0)

您是否考虑过急于加载雄辩的查询?急切的加载用于减少查询操作。在查询时,您可以使用with方法指定应加载哪些关系:

$rental_counts = Rentals::where('published',1)->with('your_relation')->get();

您可以在Laravel Documentation

中了解更多信息

答案 1 :(得分:0)

$rentals = Rentals::wherePublished(true)->withCount('state')->get();

当您遍历$rentals时,结果将在$rental->state_count

答案 2 :(得分:0)

在租金上建立一个关系“州”,然后这样称呼它

deny users ?

同时处于租赁模式

$rentals_count = Rentals::where('published',1)->with('state')->get()->groupBy('state');

$rentals_count->map(function($v, $k){
          echo $v[0]->state->name .' - '. $v->count();
     });