2016-12-14 3 views
0

Я использую Idiorm с Парижем для моего проекта PHP.
Я хочу добавить некоторые записи с некоторыми нулевыми значениями в мою базу данных mysql.
Для примера:idiorm/paris - записать null в базу данных

$openingtime->setBegin(null); 
$openingtime->setEnd(null); 
$openingtime->setDayOfWeek(1); 
$openingtime->save(); 

начи- и конечный столбец в базе данных имеет типа «время», и они обнуляемые.
освобожденная Результат

+----+-------+------+-----------+ 
| id | begin | end | dayOfWeek | 
+----+-------+------+-----------+ 
| 1 | null | null |   1 | 
+----+-------+------+-----------+ 

В результате я получил:

+----+----------+----------+-----------+ 
| id | begin | end | dayOfWeek | 
+----+----------+----------+-----------+ 
| 1 | 00:00:00 | 00:00:00 |   1 | 
+----+----------+----------+-----------+ 

ORM :: get_last_query() говорит что-то вроде этого:

UPDATE `openingtime` SET `begin` = '', `end` = '', `dayOfWeek` = '1' 

Таким образом, вместо нулевой, idiorm/париж вставляет пустую строку.

Есть ли возможность добавить null вместо пустой строки? Спасибо за помощь!

EDIT: Classdefinition из OpeningTime добавлены ниже

+0

Привет! Можете ли вы также добавить определение класса «OpeningTime»? –

+0

Привет, Дэвид, я добавил определение класса. – MMM

+0

Попробуйте прямо использовать '$ openingtime-> end = null;' и посмотреть, работает ли это. –

ответ

0

Проблема были сеттеры, точнее функции htmlentities() и strip_tags() я использовал в своих сеттеров. Эти функции возвращают пустую строку, если заданное значение равно NULL.
Мое решение теперь:

public function setBegin($begin){ 
    if(isset($begin)){ 
     $this->begin = htmlentities(strip_tags($begin), ENT_QUOTES); 
    } 
    else{ 
     $this->begin = null; 
    } 
} 

Спасибо!

Смежные вопросы