首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关联和模型数据保存问题

关联和模型数据保存问题
EN

Stack Overflow用户
提问于 2010-04-09 01:48:06
回答 1查看 425关注 0票数 0

使用cakephp 1.3进行开发(最新来自github)。与hasAndBelongsToMany绑定的模型有两种:文档和标签。换句话说,文档可以有很多标签。我已经添加了一个新的文档提交表单,用户可以输入一个用逗号分隔的标签列表(如果还不存在,将添加新的标签)。我在github上查看了cakephp bakery2.0 source code并找到了解决方案。但看起来有些地方不对劲。

代码语言:javascript
复制
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 (titlecontentshortnfodatestatus)值(’带标签的文档‘,’数组,1)有什么办法解决这个问题吗?

附注:从firebug发布此表单的数据:_method POST dataDocument测试文档内容dataDocumentyear 2010 dataDocument关于document dataDocument的简短信息1 dataDocument测试,类别,列出dataDocument测试标题无阵列,如我们所见。

EN

回答 1

Stack Overflow用户

发布于 2010-04-09 20:17:05

解决了!:)问题出现在视图中:

代码语言:javascript
复制
'date'=>array('label'=>'Date', 'type'=>'date', 'dateFormat'=>'Y'),

但是数据库中的日期字段。此字段的类型为year。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2602232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档