两个字段作为杂货Crud中的一个独特字段

时间:2013-03-19 08:22:47

标签: php codeigniter codeigniter-2 grocery-crud

我在GroceryCrud中有一个问题。

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

id, card_no, site_code, site_no

card_no 是唯一的,我已经实现了它。

然而;我的问题是 site_code site_no 只有在两个值匹配时才应该是唯一的。这意味着 site_code 101 site_no 102 ,我们尝试再次为两者插入相同的值应该拒绝它。如果我们其中一个值不同,则应允许它。

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

我希望我很清楚。

提前致谢。

3 个答案:

答案 0 :(得分:3)

除了您的表设计登录之外,您还可以创建一个自定义回调函数来检查数据库中这些值的存在。 验证将在您的两个字段之一中进行,例如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');

答案 1 :(得分:0)

听起来你应该查看桌子上的限制。

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

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

答案 2 :(得分:0)

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