Cakephp 关联与模型数据保存问题
使用CakePHP1.3(github的最新版本)开发。 有两个模型与HasandBelongToMany绑定:文档和标签。换句话说,文档可以有许多标记。我已经添加了一个新的文档提交表单,用户可以输入一个用逗号分隔的标签列表(如果还不存在,将添加新标签)。我查看了github上的cakephp bakery 2.0,找到了解决方案。但似乎有什么不对劲Cakephp 关联与模型数据保存问题,cakephp,associations,tagging,Cakephp,Associations,Tagging,使用CakePHP1.3(github的最新版本)开发。 有两个模型与HasandBelongToMany绑定:文档和标签。换句话说,文档可以有许多标记。我已经添加了一个新的文档提交表单,用户可以输入一个用逗号分隔的标签列表(如果还不存在,将添加新标签)。我查看了github上的cakephp bakery 2.0,找到了解决方案。但似乎有什么不对劲 class Document extends AppModel { public $hasAndBelongsToMany = array('Ta
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错误:1054:“字段列表”中的未知列“数组”
查询:插入到文档中(标题
,内容
,短信息
,
日期
,状态
)值('带标记的文档','',数组,1)
有没有办法解决这个问题
请注意,从firebug发布此表单的数据:
_路标
数据[文件][内容]测试文件内容
数据【文件】【日期】【年份】2010年
数据[Document][ShortInfo]关于文档的简短信息
数据[文件][状态]1
数据[文件][标签]测试、类别、列表
数据[文件][标题]测试标题
没有我们可以看到的数组。已解决!:)问题在于:
'date'=>array('label'=>'Date', 'type'=>'date', 'dateFormat'=>'Y'),
但是数据库中的日期字段。此字段的类型为“年”。能否添加要保存的数据数组?看起来$data['Document']['shortnfo']应该是int/string/float/whatever.Post时是一个数组,来自FireBug的请求是:data[Document][content]=“test Document content”data[Document][date year][year]=2010数据[Document][shortnfo]=“short info about Document data][status]=1数据[Document tags]=“test categories,list”数据[文件][标题]=“测试标题”