使用cakephp 1.3进行开发(最新来自github)。与hasAndBelongsToMany绑定的模型有两种:文档和标签。换句话说,文档可以有很多标签。我已经添加了一个新的文档提交表单,用户可以输入一个用逗号分隔的标签列表(如果还不存在,将添加新的标签)。我在github上查看了cakephp bakery2.0 source code并找到了解决方案。但看起来有些地方不对劲。
class Document extends AppModel {
public $hasAndBelongsToMany = array('Tag');
public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['tags']) && !empty($this-
>data[$this->alias]['tags']))
{
$tagIds = $this->Tag->saveDocTags($this->data[$this->alias]
['tags']);
unset($this->data[$this->alias]['tags']);
$this->data[$this->Tag->alias][$this->Tag->alias] = $tagIds;
}
return true;
}
}
class Tag extends AppModel {
public $hasAndBelongsToMany = array ('Document');
public function saveDocTags($commalist = '') {
if ($commalist == '') return null;
$tags = explode(',',$commalist);
if (empty($tags)) return null;
$existing = $this->find('all', array(
'conditions' => array('title' => $tags)
));
$return = Set::extract($existing,'/Tag/id');
if (sizeof($existing) == sizeof($tags)) {
return $return;
}
$existing = Set::extract($existing,'/Tag/title');
foreach ($tags as $tag) {
if (!in_array($tag, $existing)) {
$this->create(array('title' => $tag));
$this->save();
$return[] = $this->id;
}
}
return $return;
}
} 所以,创建新标签运行良好,但是文档模型无法保存关联数据,并告诉: SQL Error: 1054:未知列‘数组’in 'field list‘查询: INSERT INTO documents (title,content,shortnfo,date,status)值(’带标签的文档‘,’数组,1)有什么办法解决这个问题吗?
附注:从firebug发布此表单的数据:_method POST dataDocument测试文档内容dataDocumentyear 2010 dataDocument关于document dataDocument的简短信息1 dataDocument测试,类别,列出dataDocument测试标题无阵列,如我们所见。
发布于 2010-04-09 20:17:05
解决了!:)问题出现在视图中:
'date'=>array('label'=>'Date', 'type'=>'date', 'dateFormat'=>'Y'),但是数据库中的日期字段。此字段的类型为year。
https://stackoverflow.com/questions/2602232
复制相似问题