joomla でコンポーネントを作成していますが、データベースの使用、特に行の削除に問題があります。以下のコードは私が使用しているものです
$db = JFactory::getDbo();
$query = $db->getQuery(true);
// delete if this date already exists for this user
$conditions = array(
$db->quoteName('userid') . '='.$array['userid'],
$db->quoteName('date') . '='.$date
);
$query->delete($db->quoteName('#__timereport_schedule'));
$query->where($conditions);
$db->setQuery($query);
$result = $db->execute();
ここでやろうとしているのは、指定されたユーザー ID と日付に一致する行を削除することです。これはかなり簡単です。ただし、データベースには影響しません。私は変数を知っており$array['userid']
、$date
同じ関数で挿入を行うために同じ関数が後で使用されているため正しいです(レコードが存在する場合は削除して新しいレコードを作成することになっています)。挿入は正常に機能します。つまり、エントリが重複することになります.
正常に挿入された行の例:
( userid
, date
, starttime
, endtime
, id
, enddate
, ) 値 (456 leave
, days
'2013-01-01', '08:00:00', '16:00:00', 448, '2013-01-01', '3' , '["火"]')
と:
$query = $db->getQuery(true);
$columns = array('userid', 'date', 'starttime', 'endtime', 'id', 'leave');
$values = array("'".$array['userid']."'", "'".$date."'", "'".$array['starttime']."'", "'".$array['endtime']."'", "'null'", "'".$array['leave']."'");
$query
->insert($db->quoteName('#__timereport_schedule'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
try {
$result = $db->execute();
} catch (Exception $e) {
return $e;
}
私は何が欠けていますか?http://docs.joomla.org/Inserting,_Updating_and_Removing_data_using_JDatabase#Deleting_a_Recordの例に従って、このクエリを作成しました。