0

我的数据库是 Postgres,并且我在模式中组织了我的表。当我尝试使用 is_unique 表单验证规则时,它不起作用。例如,如果我希望用于唯一检查的表是products.catalog,而我要使用的列是name. 当我运行如下验证时。

$this->form_validation->set_rules("name", "Name", 'required|is_unique["products.catalog.name"]');

$this->form_validation->run();

我收到这样的错误

Error Number: 42P01/7

ERROR: relation "products" does not exist LINE 2: FROM "`products" ^

SELECT * FROM "products" WHERE "catalog" = 'bags' LIMIT 1

Filename: libraries/Form_validation.php

Line Number: 1122

我可以使用原始 PHP 自己检查,但我想知道 CodeIgniter 是否提供了解决此问题的方法。

4

1 回答 1

1

您可以在“/system/libraries/Form_validation.php”中创建自己的“is_unique”函数

 public function is_unique_with_schemas($str, $field)
    {
        list($table, $field)=explode('_', $field);
        $query = $this->CI->db->limit(1)->get_where($table, array($field => $str));

        return $query->num_rows() === 0;
    }

我改变了分隔符。至 _

然后,您可以使用这些新功能 'is_unique_with_schemas[schema.tableName_columnName]。

ps不要忘记设置新的“错误信息”

于 2020-06-18T12:17:07.650 回答