我正在使用cakephp处理模型。我有两个型号,邮政模型;其中包含与标签模型的$ hasMany关系。我希望标签名称值是唯一的。这是为了消除任何数据冗余。我想通过AJAX搜索框搜索标签。我需要能够动态地自动创建标签,但前提是它们尚未创建。我如何使用CakePHP 2.6.1实现这一目标?
实施例: 我创建了两个表:
标记:
id name post_id
帖子:
id title url content
答案 0 :(得分:2)
为了确保任何代码的name
值都是唯一的,只需在名称字段的Tag
模型中添加validation rule即可。有一个特定的isUnique验证规则。在app/Model/Tag.php
文件中,添加以下内容:
public $validate = array(
'name' => array(
'rule' => 'isUnique',
'message' => 'This tag already exists.'
)
);
这将导致具有重复标记名称的Tag模型上的任何保存操作失败,并显示您在模型中设置的错误消息。
要使其忽略任何重复项,请稍微更改保存的工作方式。将这样的内容添加到Controller逻辑中:
foreach ($this->request->data['Tags'] as $tagData) {
$this->Tag->set($tagData);
if ($this->Tag->validates()) {
$this->Tag->create();
$this->Tag->save($tagData);
}
}