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);
}
}
我正在使用 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);
}
}