À l'aide de plusieurs clauses where avec laravel générateur de requêtes

Je vais avoir beaucoup de mal à convertir la requête SQL suivante pour travailler avec laravels générateur de requêtes.

SELECT * FROM gifts 
JOIN giftcategory ON gifts.id = giftcategory.giftid
JOIN giftoccasions ON gifts.id = giftoccasions.giftid
JOIN giftrelationship ON gifts.id = giftrelationship.giftid

WHERE (gifts.gender = 'any' OR gifts.gender = 'male')
AND giftoccasions.occasionid = '2'
AND (giftcategory.categoryid = '0' OR giftcategory.categoryid = '1')
AND giftrelationship.relationshipid = '1'

Cette requête fonctionne bien, mais je ne peux pas obtenir les mêmes résultats lors de l'utilisation de Laravels générateur de requêtes. J'ai le code suivant jusqu'à présent. Il ne fonctionne pas correctement. Im pensant que le problème pourrait être lié à la orWhere partie parce qu'il semble être de retour des résultats qui ne correspondent à aucune des autres clauses where.

$giftQuery = DB::Table('gifts')
->Join('giftcategory', 'gifts.id', '=', 'giftcategory.giftid')
->Join('giftoccasions', 'gifts.id', '=', 'giftoccasions.giftid')
->where('gifts.gender', '=', "male")
->orwhere('gifts.gender', '=', "any")
->where('giftoccasions.occasionid', '=', "2")
->where('giftoccasions.relationshipid', '=', "1")
->Where('giftcategory.categoryid', '=', "0")
->orWhere('giftcategory.categoryid', '=', "1");
si vous êtes satisfait de ma réponse ci-dessous, vous pouvez l'accepter 🙂

OriginalL'auteur Dan Hastings | 2015-03-30