1

定义规则时,字段名称是否必须与数据库中的列名称匹配?

我遇到了一个问题,如果字段名称和列名称不匹配,则会显示规则并且不会将任何内容保存到数据库中。

什么有效:

数据库

user_id | username

场地

<?php echo Form::input('username', $username, array('id' => 'username')); ?><?php echo Arr::get($errors, 'username');?>

模型

class Model_User extends ORM {

    protected $_primary_key = 'user_id';

    public function rules()
    {
        return array(
            'username' => array(
                array('not_empty'),
            ),
        );
    }
}

留言

return array(
    'username' => array(
        'not_empty' => 'You must provide a username.',
    ),
);

什么不起作用:

数据库

user_id | username

场地

<?php echo Form::input('membername', $username, array('id' => 'username')); ?><?php echo Arr::get($errors, 'membername');?>

模型

class Model_User extends ORM {

    protected $_primary_key = 'user_id';

    public function rules()
    {
        return array(
            'membername' => array(
                array('not_empty'),
            ),
        );
    }
}

留言

return array(
    'membername' => array(
        'not_empty' => 'You must provide a username.',
    ),
);

如果我将字段名称更改为用户名以外的其他名称,则规则功能似乎无法正常工作。

如果我不应用任何规则,将用户名更改为其他名称不会导致将数据保存到数据库中出现任何问题。

4

1 回答 1

0

无法将数据库中的列名映射到不同的内部名称。相同的列名也用于设置规则、标签等。我不明白您为什么要更改列名,这对开发人员的期望不利。我的建议是在这种情况下重命名您的表格列。

Kohana ORM 提供的控制表列的唯一可能性是将要使用的列名数组列入白名单。在你的 ORM 模块中使用这个变量:

protected $_table_columns = array('column1','column2');
于 2013-02-02T14:34:54.167 回答