Welcome Guest, Not a member yet? Register   Sign In
prevent duplicate for Composite key columns
#1
Question 
(This post was last modified: 05-20-2022, 03:20 AM by Ahmed Haroon.)

working environment: XAMPP on Windows 10

have Unique Index - Composite:

Code:
ALTER TABLE `sales`.`brand_categories`
  ADD  UNIQUE INDEX `ui_cat_brand` (`category_id` , `brand_id`);

when user will save a duplicate entry for the combination of both columns, database will throw error.
but is there a builtin validation rule which is suitable for it like is_unique.
if yes please guide How To.
if no builtin validation rule then how i can write a custome validation rule and prevent duplicate in this case
please help.

in Model have validation rule (this is just sample what i can do -as per my basic knowledge- for uniqueness of a single column)

Code:
protected $validationRules = [
        'category_name' =>[
            'rules' =>'required|is_unique[brand_categories.category_name,id,{id}]',
            'errors' =>[
                'required'=>'Category name is required',
                'is_unique'=>'Category name has already been assigned, try another name'
            ]
        ],       
    ];


regards
Newbie here in CodeIgniter World !! Please appologize if any nonsense from me.  
environment: Windows 10, XAMPP 3.3.0, VS Code, SQLyog Community Ed. 
Reply
#2

`is_unique` supports only one column.

Code:
is_unique[table.field,ignore_field,ignore_value]

Create your own rule.
See https://codeigniter4.github.io/userguide...stom-rules
Reply
#3
Question 

(05-21-2022, 05:24 PM)kenjis Wrote: `is_unique` supports only one column.

Code:
is_unique[table.field,ignore_field,ignore_value]

Create your own rule.
See https://codeigniter4.github.io/userguide...stom-rules

thanks for reply @kenjis ... but i can't figure it out How To ?
how i can do this validation? how i can create a custom validation for this situation? 
please help. 
regards
Newbie here in CodeIgniter World !! Please appologize if any nonsense from me.  
environment: Windows 10, XAMPP 3.3.0, VS Code, SQLyog Community Ed. 
Reply
#4

at last, i added a column brandcategories, in form i hide it (display:none) and assign value using javascript code as 
brand_id + category_id
in Model added a validation "is_unique" for this new column. 
its working fine. its a way around when i can't have a solution without adding this extra column in table.
regards.
Newbie here in CodeIgniter World !! Please appologize if any nonsense from me.  
environment: Windows 10, XAMPP 3.3.0, VS Code, SQLyog Community Ed. 
Reply
#5

If you want to create a custom rule, see the `is_unique` code.
https://github.com/codeigniter4/CodeIgni...s.php#L126
Reply
#6

(05-24-2022, 12:16 AM)kenjis Wrote: If you want to create a custom rule, see the `is_unique` code.
https://github.com/codeigniter4/CodeIgni...s.php#L126
thanks @kenjis
will check it, hope i can understand it.
regards
Newbie here in CodeIgniter World !! Please appologize if any nonsense from me.  
environment: Windows 10, XAMPP 3.3.0, VS Code, SQLyog Community Ed. 
Reply




Theme © iAndrew 2016 - Forum software by © MyBB