将数据库连接属性添加到laravel

时间:2015-07-28 10:38:23

标签: php mysql laravel laravel-4 eloquent

例如,我想将属性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')时仍然会被提取......

1 个答案:

答案 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;
        }
    }
}
}