2 votes

Comment exclure les relations nulles dans Laravel eloquent eager loading ?

J'utilise Laravel Eloquent pour interroger la base de données MySQL. J'ai une table base_node et le tableau correspondant base_data (relation OneToOne). base_data . node_id = base_node . id . La question est la suivante

$result = BaseNode::with(['data' => function ($query) use ($filter_text) {

    $query->where('head', 'like', '%'. $filter_text. '%');

}])->get()->toJSon();

Résultat de la requête [{'id': 1, ..., 'data': {'id': 1, ...}}, {'id': 2, ..., 'data': null}] .

Comme vous pouvez le voir, si base_data . head ne correspond pas à la condition du filtre, data dans le résultat est nul. Comment puis-je construire une requête éloquente pour exclure complètement ces lignes du résultat ? Par exemple, le résultat souhaité est [{'id': 1, ..., 'data': {'id': 1, ...}}] .

Merci d'avance !

0voto

MikeS Points 1

Selon la réponse de @apokryfos, dans Laravel 5.8 whereHas() avait une autre syntaxe :

with("data")->whereHas([ "data", function ($query) use ($filter_text) ... ])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X