Kohana 3.1 ORM:将空模型属性值保存为0(零)而不是NULL

Ale*_*ias 3 php kohana kohana-3 kohana-orm

我有两个模型,Product和Product_Methodology.在我的产品编辑视图中,我有一个选择表单字段,用于选择多种方法之一或无(第一个空选项).在我的products表中,我有一个INT(10) methodology_id属性,该属性使用从选择表单字段中选择的方法的id进行保存.一切正常,直到今天我必须对系统进行调整,因为现在选择方法可以是可选的.所以我更改了methodology_idproducts表的字段以允许NULL值并删除not_empty了模型上的验证规则.

问题是,现在当我保存模型选择空选项而不是预期时NULL,我得到一个0(零)值.

这有什么线索吗?非常感谢,如果不是那么清楚,请告诉我.

roo*_*ays 6

您使用什么形式输入来选择方法?是<select>吗?如果是这样,当没有选择方法时,选择选项的值可能设置为0,并与其他表单数据一起发送.

在这种情况下,我使用模型的filters()方法创建一个自定义过滤器,将值设置为NULL(如PHP处理它)empty(),如下所示:

public function filters()
{
    return array(
        'methodology_id' => array(
            array('Filter::null', array(':value')),
        ),
    );
}
Run Code Online (Sandbox Code Playgroud)

其中Filter是带有静态方法的helper类.喜欢...:

class Kohana_Filter {

    public static function null($value)
    {
        return (empty($value) ? NULL : $value);
    }

}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)