1

從下列查詢即時得到預期的結果形成查詢:Laravel多對多如何雄辯或查詢生成器

SELECT * 
    FROM rooms r 
    JOIN amenities_room am 
     ON r.id = am.room_id 
    JOIN amenities a 
     ON am.amenities_id = a.id 
    AND a.id IN (2,3) 
GROUP BY r.id 
    HAVING COUNT(*)=2; 

如何爲中(口才或查詢生成器在laravel方式查詢)

注: 下表涉及:

客房
ID


設施
ID

amenities_room
ROOM_ID
amenities_id

+0

'rooms'有很多'設施? 'amenities'屬於'amenities_room' ?!你應該編輯你的問題,並告訴我們模型之間的關係。如果是1:N或N:N。我建議你先閱讀文檔:https://laravel.com/docs/5.5/eloquent-relationships –

+0

請接受任何解決您的問題的答案,以關閉此問題,並upvote任何/所有答案已幫助解決您的問題問題 –

回答

0
$rooms = Room::with('amenities') 
->withCount('amenities', function($query){ 
    $query->whereIn('id', [2, 3]); 
}) 
->where('amenities_count', 2) 
->get() 

文檔計數相關機型:0因爲你的口才期待一個字符串

+0

對編輯抱歉,不得不做一些比我想得到的更多的研究。 – Jeff

+0

消息「:」mb_strpos()期望參數1是字符串,對象給出「得到這個錯誤 –

0

你得到這個錯誤mb_strpos() expects parameter 1 to be string, object given但你在這裏withCount()傳遞的對象試試這個

$rooms = Room::with('amenities') 
->withCount('amenities')->where(function($query){ 
    $query->whereIn('id', [2, 3]); 
}) 
->where('amenities_count', 2) 
->get()