Codeigniter表单验证is_unique似乎是将子域添加到表名
问题描述:
我对这个问题感到困惑。我的代码非常不同,所以我期望得到不同的结果。但我正在运行表单验证并尝试调用is_unique函数。但它似乎将我的子域添加到查询中的表名。而对于我的生活,我无法弄清楚为什么。Codeigniter表单验证is_unique似乎是将子域添加到表名
我有一个库类,设置了它需要在这里
protected function settablecolumnattributes(){
$this->addcolumnattributes(
array(
"name" => "user_login",
"type" => "VARCHAR",
"length" => "255",
"default" => "NULL",
"collation" => "",
"attributes" => "",
"null" => "",
"index" => "",
"autoincrement" => "",
"comments" => "",
"width" => "",
"sortable" => "true",
"control" => array(
"type" => "textbox",
"label" => "User Login",
"id" => "",
"class" => "",
"placeholder" => "Enter a Username",
"validations" => "required|is_unique[blah.user_login]"
),
"visible_on_form" => true,
"visible_on_table" => true
)
);
}
那么我收集所有的控制验证的位置并将其输出的控制。
public function set_object_form_validations(){
$fields = $this->getcolumnattributes();
foreach($fields as $field):
$visible_on_form = property_exists($field, "visible_on_form");
if($visible_on_form !== false):
if($field->visible_on_form !== true):
continue;
endif;
endif;
$this->CI->form_validation->set_rules($field->name, $field->control['label'], $field->control['validations']);
endforeach;
}
现在当验证遇到is_unique
我得到这个错误
Error Number: 1146
Table '12385468.demo_blah' doesn't exist
SELECT * FROM `demo_blah` WHERE `user_login` = 'joe' LIMIT 1
Filename: libraries/Form_validation.php
Line Number: 1125
我使用测试网址是这样demo.example.com/admin/users/add
我走进表单验证文件,并试图追溯这个问题,但它只是越来越深入到CI功能。 $table
存在的每个点只是说blah
,但您可以在查询中看到它表示demo_blah
。我很困惑。
答
在钻取所有代码化函数后,将其计算出来。原来在config.php = $config['dbprefix']
内有一个数据库前缀集。我原以为这是子域,因为它说的是演示。但前缀也设置为演示。实际上查询只是我的设置没有问题。