2015-07-28 142 views
1

例如,我想向物业zeroDateTimeBehavior=convertToNull添加到MySQL连接。 我已经尝试过在database.php以下,但它被忽略:添加数据库连接属性laravel

'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

这可能帮助http://fideloper.com/laravel-PDO连接选项 – user4621032

+0

@ user4621032我已经读了,但我无法找到这个'zeroDateTimeBehavior'什么特别......或者我应该使用'PDO :: NULL_EMPTY_STRING'? – intrixius

+0

我试图' '选项'=>数组( \t \t \t \t PDO :: ATTR_ORACLE_NULLS => PDO :: NULL_EMPTY_STRING \t \t \t)',但它仍然具有取“0000-00-00 00:00日期字段: 00' – intrixius

回答

0

我暂时用添加 ->where('Datefield', '<>', '0000-00-00 00:00:00')声明解决它...

这不是一个回答我的问题,而是一个解决方案随之而来的问题...

UPDATE

编辑:下面的类似乎并没有帮助毕竟...我会更新它,当我找到解决办法

为了使它更通用的,以前的同事已经扩展雄辩模型代替,这样我就可以摆脱->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; 
     } 
    } 
} 
}