J'essaie d'insérer la valeur id à l'aide de JTable, mais il semble que j'ai manqué quelque chose et que j'ai commis l'erreur en le faisant. Quels changements dois-je faire pour que cela fonctionne? Merci d'avance
$db = $this->getDbo();
$query = $db->getQuery(true);
$data = array(
['articleId'] = $this->get('id'),
['title'],
['sharetoken']
);
$values = array($db->quote('id'), $db->quote($title), $db->quote($token));
$query
->insert($db->quoteName('#__share_draft'))
->columns($db->quoteName($data))
->values(implode(',', $values));
$db->setQuery($query);
$table->save($data);
return $db->execute();
Votre $data
doit être composé uniquement de noms de colonnes et non de valeurs.
$data = array('articleId', 'title', 'sharetoken');
et $values
_ ne dispose pas de id
correct pour le moment, puisque vous ne faites que citer une chaîne, et non une valeur d’id.
$values = array($db->quote($this->get('id')), $db->quote($title), $db->quote($token));
Donc, le code complet devrait ressembler à ceci:
$db = $this->getDbo();
$query = $db->getQuery(true);
$data = array('articleId', 'title', 'sharetoken');
$values = array($db->quote($this->get('id')), $db->quote($title), $db->quote($token));
$query
->insert($db->quoteName('#__share_draft'))
->columns($db->quoteName($data))
->values(implode(',', $values));
$db->setQuery($query);
$table->save($data);
return $db->execute();
Vous pouvez avoir des noms de colonne et des valeurs dans le même array
(si cela vous semble plus logique), mais cela nécessite quelques modifications.
Par exemple:
$data = array(
'articleId' => $db->quote($this->get('id')),
'title' => $db->quote($title),
'sharetoken' => $db->quote($token)
);
$query
->insert($db->quoteName('#__share_draft'))
->columns($db->quoteName(array_keys($data)))
->values(implode(',', array_values($data)));
Vérifier si un identifiant existe dans la table
$db = $this->getDbo();
$query = $db->getQuery(true);
$query
->select('*')
->from($db->quoteName('#__share_draft'));
->where($db->quoteName('articleId') . ' = '. $db->quote($this->get('id')));
$db->execute();
$num_rows = $db->getNumRows();
if ($num_rows > 0) {
// article with this ID exists
} else {
// article dosen't exist
}