Yii2-唯一验证器两个属性不同的模型
我有一个模型打印机,一个模型类别,以及两个模型类别之间关系的模型PrinterEl 在CategoryPrinterRel模型中,我需要在$category\u id和打印机的客户端$printer->client\u id之间有一个唯一的验证器 到目前为止,我已经试过了Yii2-唯一验证器两个属性不同的模型,yii,yii2,Yii,Yii2,我有一个模型打印机,一个模型类别,以及两个模型类别之间关系的模型PrinterEl 在CategoryPrinterRel模型中,我需要在$category\u id和打印机的客户端$printer->client\u id之间有一个唯一的验证器 到目前为止,我已经试过了 public function rules() { [['category_id', $this->printer->client_id], 'unique', 'targetAttribute' =&
public function rules()
{
[['category_id', $this->printer->client_id], 'unique', 'targetAttribute' => ['category_id']]
}
有没有其他方法可以做到这一点?
我使用的方法的问题是,当打印机对象为空时,尝试$this->printer->client\u id会出现错误我正在寻找更优雅的或内置的。不过,现在我选择了自定义验证器。在模型中:
public function rules()
{
return [
[['category_id', 'printer_id'], 'integer'],
[['printer_id', 'category_id'], 'required'],
[['cat_id'],'validateUniquenessOnClient']
];
}
public function validateUniquenessOnClient($attribute, $params, $validator)
{
$isPrinterUniqueOnClient = DbPrinterRepository::IsPrinterCatRelUniqueOnClient($this->category_id, $this->printer_id);
if(!$isPrinterGroupUniqueOnClient)
{
$this->addError($attribute, "There is already a printer using that category ({$this->cat->name}).");
}
}
规则的第一项应该是一个属性数组,它们的名称是字符串形式的$此->打印机->客户端id是一个值,可能是一个整数?。这是行不通的。我确实有这些规则,但为了简洁起见,我省略了它们。它是有效的,但正如我提到的,当打印机空的时候,它会给我带来错误。我正在尝试另一种方法