定义规则时,字段名称是否必须与数据库中的列名匹配?
我遇到问题,如果字段名称和列名称不匹配,则会显示规则,并且不会将任何内容保存到数据库中。
什么有效:
数据库
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.',
),
);
如果我将字段名称更改为域名以外的其他名称,则规则功能无法正常工作。
如果我不应用任何规则,将用户名更改为其他内容不会导致将数据保存到数据库时出现任何问题。
答案 0 :(得分:0)
无法将数据库中的列名映射到不同的内部名称。相同的列名也用于设置规则,标签等。我不明白为什么你想要更改列名,这对开发人员的期望是不利的。我的建议是在这种情况下重命名表列。
Kohana ORM提供的唯一控制表列的可能性是将要使用的列名列入白名单。在ORM模块中使用此变量:
protected $_table_columns = array('column1','column2');