gpt4 book ai didi

php - idiorm/paris - 将 null 写入数据库

转载 作者:行者123 更新时间:2023-11-29 19:44:17 24 4
gpt4 key购买 nike

我在我的 PHP 项目中使用 Idiorm 和 Paris。
我想向我的 mysql 数据库添加一些带有空值的条目。
例如:

$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/paris 插入一个空字符串,而不是 null。

是否可以添加 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 上,更准确地说是我在 setter 中使用的函数 htmlentities()strip_tags() 。如果给定值为 null,这些函数将返回空字符串。
我现在的解决方案:

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

谢谢!

关于php - idiorm/paris - 将 null 写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41145934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com