Laravel Éloquent où le terrain est X ou null
J'ai un tableau comme ceci:
table
- field1: tinyint
- field2: varchar (nullable)
- datefield: timestamp (nullable)
Maintenant je veux obtenir toutes les entrées où champ1 est de 1, champ2 est nulle et où datefield est plus petit que X ou null. J'ai déjà essayé quelque chose comme ceci:
$query = Model::where('field1', 1)
->whereNull('field2')
->where('datefield', '<', $date)
->orWhereNull('datefield');
mais qui ne fonctionne pas. J'ai toujours chaque entrée où datefield est null. Il n'a pas d'importance ce que les autres champs. J'ai aussi essayé de le séparer en 2 requêtes: de la Première à obtenir à chaque ligne où datefield est plus petit que X ou nulle et puis (basé sur obtenir tous les domaines où champ1 est 1 et champ2 est null.
Le résultat était le même.
Une idée de comment faire cela?
Vous devez vous connecter pour publier un commentaire.
Cela sonne comme vous avez besoin de faire usage de avancé où l'une des clauses.
Étant donné que la recherche dans
field1
etfield2
est constante, nous allons les laisser comme c'est, mais nous allons ajuster votre recherche dansdatefield
un peu.Essayez ceci:
Si jamais vous avez besoin de déboguer une requête pour voir pourquoi il ne fonctionne pas, il peut vous aider à voir ce que SQL, il est effectivement en cours d'exécution. Vous pouvez la chaîne
->toSql()
à la fin de votre éloquent requête pour générer le SQL.Vous pouvez fusionner deux requêtes: