2 votes

Obtenir des données à partir d'une colonne JSON dans la base de données MySql

Dans ma table il y a une colonne avec des données encodées en JSON et un enregistrement ressemble à ceci

{"late_fee":10,
"due_date":"2019-10-01 00:00:00",
"property_type":"house"
}

Lorsque je récupère des données de la base de données, j'ai besoin d'enregistrements où la clé late_fee n'existe pas dans la colonne de données JSON. Comment puis-je le mettre dans la condition where?

C'est la ligne de code sur laquelle je dois ajouter la condition mentionnée :

$payments = Rent::where('property_id', $property['id']);`

ÉDIT

D'après les commentaires que vous avez postés, pouvez-vous me confirmer que c'est la bonne façon de faire :

$payments = Rent::where('property_id', $property['id'])->whereJsonContains('notification_settings->late_fee', null);

P.S. notification_settings est le nom de la colonne où les données JSON sont stockées.

0voto

Iura Varzari Points 362

Venez de lire cet article court: https://laravel.com/docs/5.7/queries#json-where-clauses

Cela devrait fonctionner :

$payments = Rent::where('property_id', $property['id'])->whereJsonContains('notification_settings->late_fee', null);

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