Quand je fais quelque chose comme SomeModel::with('user')
cela retourne une instance de Query\Builder
. Comment puis-je obtenir cette instance sans avoir besoin d'appeler la with()
(ou similaire)?
Par exemple, je l'ai essayé: new SomeModel
, Mais cela retournera évidemment l'instance de mon modèle, pas le générateur de requêtes (pas travaillé pour moi). Le SomeModel::getQuery
Ne fonctionne pas non plus, car il renvoie un Query\Builder
Non lié à mon modèle.
J'en ai besoin pour configurer en fonction de certaines conditions. Donc, au départ, il doit être vide, comme ça:
$someBuilder = SomeModel::getQueryBuilder(); // eg.
if(condition()) {
$someBuilder->where(...);
}
$someResults = $someBuilder->get();
Utilisez la méthode statique query
:
$query = User::query();
De plus, vous pouvez utiliser la méthode when
pour chaîner ces conditions directement sur le générateur de requêtes lui-même:
$results = SomeModel::query()->when(condition(), function ($query) {
$query->where(...);
})->get();
Ceci est fonctionnellement équivalent à la clause impérative if
.