例如,我想将属性zeroDateTimeBehavior=convertToNull
添加到MySQL连接。
我已经在database.php
中尝试了以下内容,但它被忽略了:
'mysql' => array(
'driver' => 'mysql',
'host' => '127.1.1.1:3306',
'database' => 'db_name',
'username' => 'db_username',
'password' => 'db_password',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
'options' => array( 'zeroDateTimeBehavior' => 'convertToNull')
),
或者有什么其他方法可以忽略日期字段,当它们是'0000-00-00 00:00:00'而不是NULL?因为在使用导致问题的->whereNotNull('DateField')
时仍然会被提取......
答案 0 :(得分:0)
我通过添加 ->where('Datefield', '<>', '0000-00-00 00:00:00')
语句暂时解决了这个问题......
这不是我的问题的答案,而是解决由此产生的问题......
<强>更新强>
编辑:下面的课程似乎没有帮助...我会在找到解决方案时更新它为了使它更通用,一位前同事改为扩展了Eloquent模型,所以我可以摆脱所有模型的->where('Datefield', '<>', '0000-00-00 00:00:00')
语句......
class BaseModel extends Eloquent {
public static function boot(){
parent::boot();
static::creating(function($model) {
static::setNullWhenZeroDateTime($model);
return true;
});
}
private static function setNullWhenZeroDateTime($model) {
foreach ($model->toArray() as $name => $value) {
if ($value == '0000-00-00 00:00:00') {
$model->{$name} = null;
}
}
}
}