CakePHP:删除数据库表中的冗余

CakePHP: Removing Redundancy In Database Tables

我正在使用 cakephp 制作模型。我有两个模型, post 模型;其中包含与标签模型的 $hasMany 关系。我希望标签名称值是唯一的。这是为了删除任何数据冗余。我想让它可以通过 AJAX 之类的标签搜索框进行搜索。我需要能够即时自动创建标签,但前提是它们尚未创建。我如何使用 CakePHP 2.6.1 实现此目的?

示例: 我创建了两个表:

标签:

id    name    post_id

posts:

id    title    url    content

为了确保任何标签的name值是唯一的,只需添加一个validation rule to the Tag model for the name field. There is a specific isUnique验证规则。在您的 app/Model/Tag.php 文件中,添加:

public $validate = array(
    'name' => array(
        'rule' => 'isUnique',
        'message' => 'This tag already exists.'
    )
);

这将导致对具有重复标签名称的标签模型的任何保存操作失败,并显示您在模型中设置的错误消息。

要使其忽略任何重复项,请稍微更改保存的方式。将类似这样的内容添加到您的控制器逻辑中:

foreach ($this->request->data['Tags'] as $tagData) {
    $this->Tag->set($tagData);
    if ($this->Tag->validates()) {
        $this->Tag->create();
        $this->Tag->save($tagData);
    }
}