2

我在 GroceryCrud 有一个问题。

我想在一个表中插入数据。表是这样的:

id, card_no, site_code, site_no

card_no是独一无二的,我已经实现了它。

然而; 我的问题是site_codesite_no应该是唯一的,只有两个值都匹配。这意味着site_code101并且site_no102并且我们尝试再次为两者插入相同的值应该拒绝它。如果我们其中一个值不同,它应该允许它。

在这种情况下,我们在插入时将这两个值视为一个。

我希望我很清楚。

提前致谢。

4

3 回答 3

3

除了您的表设计登录之外,您还可以创建一个自定义回调函数来检查这些值在您的数据库中是否存在。验证将在您的 2 个字段之一中进行,例如 site_code:

public function _unique_code_no($site_code)
{
    $CI =& get_instance();
    $CI->form_validation->set_message('_unique_code_no', 'the values must be unique');
    $site_no=$CI->input->post('id');
    $query=$CI->db->query("select 1 from mytable where site_no=$site_no and site_code=$site_code");
    if ($query->num_rows==0){
        return TRUE;
    }else{
        return FALSE;
    }
}

和验证规则:

$this->form_validation->set_rules('site_code', 'Site code', 'required|_unique_code_no');
于 2013-03-19T12:13:07.133 回答
0

听起来您应该查看桌子上的约束。

在这种情况下使用 id 列是否有充分的理由?如果没有,则应将其删除,然后将 site_code 和 site_no 都设置为主键。

使用 (site_code,site_no) 作为主键,您将无法插入这两个值的重复项。

于 2013-03-19T08:47:16.960 回答
0

我认为你应该使用callback_column( string $column , mixed $callback )方法。检查此链接回调列

于 2013-03-19T09:14:49.077 回答