Web*_*ect 1 laravel eloquent laravel-5.7
由于某种原因,我无法理解这个问题,尽管答案似乎就在我面前。
我有 3张桌子,rentals并且amenitiesamenities_rentals
便利设施包括空调、工作人员等。
有, .amenities_rentals 该表基本上是一个连接到 的参考表。rentail_idamenities_idrentalsamenities
在搜索中,用户可以通过勾选某些设施来缩小租金范围。到目前为止,它为我提供了所有至少有一个已勾选选项的租金。我需要将其范围缩小到仅拥有所有所选便利设施的出租房。这就是我所拥有的,这不仅没有正确地获取信息,而且我知道有更好的方法来做到这一点。
if($request->has('amenities'))
{
$rental_ids = AmenitiesRentals::select('rental_id')
->whereIn('amenities_id',$request->amenities)
->distinct()
->get();
$builder->whereIn('rentals.id', $rental_ids->toArray());
}
Run Code Online (Sandbox Code Playgroud)
构建器的其余部分工作正常。
BelongsToMany正如 Kamal Paliwal 建议的那样,在模型中定义关系Rental:
public function amenities() {
return $this->belongsToMany(Amenity::class, 'amenities_rentals', 'rental_id', 'amenities_id');
}
Run Code Online (Sandbox Code Playgroud)
然后使用whereHas():
$amenities = $request->amenities;
$rentals = Rental::whereHas('amenities', function ($query) use ($amenities) {
$query->whereIn('amenities.id', $amenities);
}, '=', count($amenities))->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |