2012-07-19 35 views
2

在Kohana的3.2,当您覆盖ORM的功能“价值”,然后像做:Kohana的ORM插入NULL而不是空字符串

public function values(array $values, array $expected = NULL) {   

    if($values['a_column'] == "") $values['a_column'] = NULL; 

    return parent::values($values); 
} 

NULL值将被改造成一个空字符串无论如何,这不是我想要的行为。 任何人都知道解决方法?我在文档或网上找不到任何东西...

回答

4

我发现了这个答案。只需使用一个过滤器在你的模型,像这样: -

public function filters() 
{ 
    return array(
    'initial_assessment_date' => array(
     array(function($value) { 
     return (!$value) ? NULL : $value; 
     }) 
    ) 
); 
} 
+0

太棒了!我在我的情况下工作过,但以后很容易知道! :) – Piero 2012-09-27 08:07:35

1

这是因为后来的ORM :: values使用array_key_exists。您需要使用unset删除该值。

+1

我曾想过这一点,它的工作原理上创建,但不是在更新,因为解封将离开DB值不变... – Piero 2012-07-19 16:48:05

+0

缺乏这个功能对我来说非常坦率地说是令人惊讶的。 – 2012-09-26 19:26:29

相关问题