[英]unique field validations in model based on foriegn key yii2
I have a table called menusoffered
where I am storing menuname
based on restaurantid
which is a foreign key. 我有一个名为
menusoffered
的表, menusoffered
在其中存储基于外键restaurantid
menuname
。
In my menusoffered
model I have declared that menuname
has a unique validator, but this is checking the uniqueness from the entire table. 在我的
menusoffered
模型中,我已经声明menuname
具有唯一的验证器,但这是在整个表中检查唯一性。
I want it to check uniqueness based on restaurantid
, Can any one help me how to make this menuname
unique for particular restaurantid
? 我希望它根据
restaurantid
检查唯一性,有人可以帮助我如何使此menuname
对于特定restaurantid
唯一吗?
Below is my given menu model, 以下是我给定的菜单模型,
class Menusoffered extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'menusoffered';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
['phase_id', 'required', 'message' => 'Please select Phase'],
['menuname', 'required'],
['price', 'required'],
[['price'],'integer' , 'message' =>'Price should be in digits'],
[['image_url'], 'file'],
[['description', 'status'], 'string'],
[['createdts','restaurantid'], 'safe'],
['master_menu_sepcality_id', 'required', 'message' => 'Please select Speciality'],
['master_menu_type_id', 'required', 'message' => 'Please select Type'],
['menuname', 'unique', 'with'=>'restaurantid'],
[['restaurantid'], 'exist', 'skipOnError' => true, 'targetClass' => Restaurant::className(), 'targetAttribute' => ['restaurantid' => 'id']],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'master_menu_sepcality_id' => 'Master Menu Sepcality ID',
'master_menu_type_id' => 'Master Menu Type ID',
'item' => 'Item',
'price' => 'Price',
'restaurantid' => 'Restaurantid',
'phase_id' => 'Phase ID',
'description' => 'Description',
'image_url' => 'Image Url',
'status' => 'Status',
'createdts' => 'Createdts',
];
} }
Try this: Yii2 Unique Validator : 试试这个: Yii2 Unique Validator :
// a1 and a2 need to be unique together, only a1 will receive error message
['a1', 'unique', 'targetAttribute' => ['a1', 'a2']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.