上下文
我有三种型号:列表,房间和房间类型 -
LISTING
|-----|-------------|--------------------|
| ID | title | description |
|-----|-------------|--------------------|
| 1 | some title | some description |
| 2 | some title | some description |
| 3 | some title | some description |
etc
ROOMS
|-----|---------------|---------------|--------------------|
| ID | room_type_id | listing_id | room_description |
|-----|---------------|---------------|--------------------|
| 1 | 1 | 1 | some description |
| 2 | 2 | 1 | some description |
| 3 | 1 | 1 | some description |
etc
ROOM_TYPES
|-----|------------|
| ID | name |
|-----|------------|
| 1 | Bedroom |
| 2 | Bathroom |
| 3 | Kitchen |
etc
问题
我正在尝试查询具有X个房间类型的列表模型,例如所有列出> = 2卧室。
我认为这个sql是对的,只是不确定如何在Laravel中执行此操作 -
SELECT listing.id, listing.title, count(rooms.id)
FROM listing
JOIN rooms on rooms.listing_id = listing.id
WHERE rooms.`room_type_id` = 10
GROUP BY listing.id
HAVING count(rooms.room_type_id) >= 1
有什么想法吗?
PS。我正在使用Laravel 4
提前致谢:)
答案 0 :(得分:0)
因此,在使用复杂的SQL查询后,我使用模型访问器来实现我的目标:
在列表模型上
public function bedroomCount()
{
return $this->rooms()
->selectRaw('listing_id, count(*) as count')
->where('room_type_id', '=', '1')
->groupBy('listing_id');
}
和查询
$listings = Listing::
has('bedroomCount', '>=', $x)
->get();