我有一个叫“租金”的表,在每一行中有“州”,“城市”,“邮政编码”列,这些列将所有房屋ID都发送到带有该信息的另一个表中。大约有3400出租。我拉每列以分别显示州,城市和邮政编码。我需要显示每个房间有多少租金。我现在正在通过ajax进行此操作,此人开始输入他们想看到的内容,并且它会自动使用计数完成操作,但是由于执行方法的原因,操作速度很慢。
$rentals_count = Rentals::where('published',1)->get();
foreach($states as $state) {
echo $state.”-“.$rentals_count->where(‘state’,$state->id)->count();
}
以上大致是我对删除的内容所做的事情,因为它们与该问题无关。有一个更好的方法吗?它有点滞后,所以自动完成功能似乎对新用户不利。
答案 0 :(得分:0)
您是否考虑过急于加载雄辩的查询?急切的加载用于减少查询操作。在查询时,您可以使用with
方法指定应加载哪些关系:
$rental_counts = Rentals::where('published',1)->with('your_relation')->get();
中了解更多信息
答案 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();
});