Я хочу сравнить две даты, где пользовательская дата ввода не должна сохраняться в Mysql, если в столбце в отношениях «Один ко многим» уже существует одна и та же дата. Моя проблема в том, что столбец даты имеет тип отметки времени, поэтому две одинаковые даты имеют в другое время, и он все равно будет сохраняться в базе данных, поскольку они по-прежнему имеют «другое значение», например «2004-13-12 8:00:00», отличается от «2014-13-12 8:07:08». Я могу сделать это в Mysql
SELECT date_created
FROM koleks
WHERE
-- Truncate the datetime to a date only
DATE(date_created) = '2014-03-12'
AND id = 3942
Я пытался в Доктрине, но я не добился успеха.
public function getDateCreate($date,$id) {
//$date =date('Y-m-d H:i:s',strtotime('2014-03-12 8:00:00'));this will
// $id = 3942;//work
$q = $this->createQuery('k')
->select('k.date_created')
->addSelect('k.loan_id')
->from('Koleks k')
->innerJoin('k.Loans l')
->andWhere('k.date_created=?',$date)
->andWhere('k.loan_id=?',$id);
return $q->execute();
// действие
$dateOfPayment = '2014-01-10';
$ids = 1234;
$duplicates = Doctrine_Core::getTable('Koleks')->getDateCreate($dateOfPayment,$id);
if (count($duplicates) > 0) {
$this->fieldErrors['date_of_payment_'.$loan['id']] = 'Error Duplicate date.';
}
else {
//code to save in database;
}
Любые идеи? Я хочу выдать ошибку в действии, если часть даты двух значений даты имеет одинаковое значение, независимо от его времени (час, мин, сек).
Учение с радостью примет DATE()
функция в dql:
->andWhere('DATE(k.date_created) = ?', $date)
В MySQL вы можете использовать функцию DATE () для удаления временной части DATETIME.