web-dev-qa-db-fra.com

Charger depuis JTable avec des valeurs nulles

J'essaie de charger une ligne spécifique de ma table de base de données avec JTable. Dans mon cas, j'ai 3 champs qui est unique. Dans la plupart des cas, deux de ces champs auront une valeur nulle, tandis qu'un aura toujours une valeur.

Voici un exemple de la façon dont j'essaie de récupérer la ligne

$table = $this->getTable("table");
$table-load(['field1' =>'something', 'field2' => null, 'field3' => null]);

Lors du débogage, j’ai découvert que joomla crée une requête du type field1 = 'quelque chose' ET field2 = '' ET field3 = '' qui ne permet pas de trouver la ligne avec les valeurs NULL.

Existe-t-il une solution de contournement utilisant encore JTable ou dois-je utiliser la base de données sans JTable dans cette situation? J'ai lu des endroits où ils ne prennent pas une valeur nulle lors de l'interrogation, mais j'espère toujours qu'il existe une solution

EDIT 1:
Voici un lien Pastebin sur l’apparence de la table http://Pastebin.com/TkKRG7FV

1
Morten

Peut-être besoin de plus de détails sur la structure de la base de données ici. Par exemple, si je vous ai bien compris, vous avez défini trois champs dans la base de données comme "doit être unique", toute base de données qui respecte correctement la spécification SQL ne vous laissera pas mettre une valeur null dans aucun de ces champs. (Certains dbs le permettent, mais je ne suis pas sûr que je dépendrais de cette condition pour continuer.)

Il serait utile de voir le code SQL qui a créé la table de base de données avec laquelle vous travaillez pour m'aider à comprendre ce que vous essayez de faire.

1
Arlen

JTable::load() - Charge une ligne de la base de données et lie les champs aux propriétés de l'objet.

la syntaxe est void load ($keys = NULL, $reset = true)

$ keys est une valeur de clé primaire facultative pour charger la ligne ou un tableau de champs à comparer.

Ce que vous faites, c'est de charger la ligne qui correspond à NULL

Vous devez définir vos valeurs par défaut dans le constructeur JTable.

0
Walt Sorensen