idiorm/paris - 将空值写入数据库
idiorm/paris - write null to database
我在我的 PHP 项目中使用巴黎的 Idiorm。
我想在我的 mysql 数据库中添加一些带有一些空值的条目。
例如:
$openingtime->setBegin(null);
$openingtime->setEnd(null);
$openingtime->setDayOfWeek(1);
$openingtime->save();
数据库中的 begin- 和 end-column 的类型为 "time" 并且它们可以为 null。
例外的结果
+----+-------+------+-----------+
| 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/paris 插入一个空字符串,而不是空字符串。
是否可以添加 null 而不是空字符串?
感谢您的帮助!
编辑:
下面添加了 OpeningTime 的类定义
class OpeningTime extends Model {
public static $_table = 'openingtime';
public static $_id_column = 'id';
public function getId(){
return $this->id;
}
public function getDayOfWeek(){
return $this->dayOfWeek;
}
public function getBegin(){
return $this->begin;
}
public function getEnd(){
return $this->end;
}
public function setBegin($begin){
$this->begin = htmlentities( strip_tags($begin), ENT_QUOTES);
}
public function setEnd($end){
$this->end = htmlentities( strip_tags($end), ENT_QUOTES);
}
public function setDayOfWeek($dayOfWeek){
$this->dayOfWeek = htmlentities( strip_tags($dayOfWeek), ENT_QUOTES);
}
}
问题出在 setter 上,更确切地说是函数 htmlentities() 和 strip_tags()二传手。如果给定值为 null,这些函数 return 一个空字符串。
我现在的解决方案:
public function setBegin($begin){
if(isset($begin)){
$this->begin = htmlentities( strip_tags($begin), ENT_QUOTES);
}
else{
$this->begin = null;
}
}
谢谢!
我在我的 PHP 项目中使用巴黎的 Idiorm。
我想在我的 mysql 数据库中添加一些带有一些空值的条目。
例如:
$openingtime->setBegin(null);
$openingtime->setEnd(null);
$openingtime->setDayOfWeek(1);
$openingtime->save();
数据库中的 begin- 和 end-column 的类型为 "time" 并且它们可以为 null。
例外的结果
+----+-------+------+-----------+
| 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/paris 插入一个空字符串,而不是空字符串。
是否可以添加 null 而不是空字符串? 感谢您的帮助!
编辑: 下面添加了 OpeningTime 的类定义
class OpeningTime extends Model {
public static $_table = 'openingtime';
public static $_id_column = 'id';
public function getId(){
return $this->id;
}
public function getDayOfWeek(){
return $this->dayOfWeek;
}
public function getBegin(){
return $this->begin;
}
public function getEnd(){
return $this->end;
}
public function setBegin($begin){
$this->begin = htmlentities( strip_tags($begin), ENT_QUOTES);
}
public function setEnd($end){
$this->end = htmlentities( strip_tags($end), ENT_QUOTES);
}
public function setDayOfWeek($dayOfWeek){
$this->dayOfWeek = htmlentities( strip_tags($dayOfWeek), ENT_QUOTES);
}
}
问题出在 setter 上,更确切地说是函数 htmlentities() 和 strip_tags()二传手。如果给定值为 null,这些函数 return 一个空字符串。
我现在的解决方案:
public function setBegin($begin){
if(isset($begin)){
$this->begin = htmlentities( strip_tags($begin), ENT_QUOTES);
}
else{
$this->begin = null;
}
}
谢谢!