首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解绑定找不到明显存在的模型

解绑定找不到明显存在的模型
EN

Stack Overflow用户
提问于 2013-07-30 16:33:03
回答 2查看 76关注 0票数 0

我试图对一个名为uploads的模型执行一个查询,在该模型中,我搜索所有具有给定标记的上传。我使用的是CakeDC标签插件,我正在使用本教程中的http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations。我试图克服这样一个事实,即插件默认提供两个查询(不能搜索)。

因此,我试图通过bindModel函数进行连接:

代码语言:javascript
复制
$this->Upload->Behaviors->load('Containable'); 

    $this->Upload->unbindModel(array(
        'hasAndBelongsToMany' => array('Tag')
        ));

    $this->Upload->bindModel(array(
        'hasOne' => array(
            'Tagged' => array(
                            'className' => 'Tags.Tagged', 
                'foreignKey' => false,
                'conditions' => array('Tagged.foreign_key = Upload.id')
            ),
            'Tag' => array(
                'foreignKey' => false, 
                'conditions' => array('Tag.id = Tagged.tag_id')
            )
        )
    ));

    $tag = $this->Upload->find('all', array(
        'contain' => array('Tag'),
        'conditions' => array( 'Tag.name' => $tagname)
        ));

然而: SQLSTATE42S22:列未找到:在'on子句‘中有1054个未知列'Tagged.tag_id’

我相信这可能是因为标记只是一个连接表,而不是一个合适的模型。我怎样才能让这张桌子像我需要的那样连接起来?

SQL转储: SQL查询:

代码语言:javascript
复制
SELECT 
    Upload.id,
    Upload.name,
    Upload.description,
    Upload.created,
    Upload.modified,
    Upload.filetype,
    Upload.numberofviews,
    Upload.numberofdownloads,
    Upload.model_dir,
    Upload.model,
    Upload.owner,
    Upload.license,
    Upload.category,
    Upload.default_picture,
    Upload.soft_delete,
    Tag.id,
    Tag.identifier,
    Tag.name,
    Tag.keyname,
    Tag.weight,
    Tag.created,
    Tag.modified
FROM
    database.uploads AS Upload
        LEFT JOIN
    database.tags AS Tag ON (Tag.id = Tagged.tag_id)
WHERE
    1 = 1 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-30 19:17:08

和相关的https://github.com/CakeDC/tags/wiki/Find-tagged-objects一样,答案是根本不做一个连接,让插件为我做这个工作。

代码语言:javascript
复制
$tag = $this->Upload->Tagged->find('tagged', array('by' => $tagname, 'model' => 'Upload', 'link' => 'User' ));

遗憾的是,似乎在查询中忽略了上传相关的信息。我肯定我会想办法绕过它的。

票数 0
EN

Stack Overflow用户

发布于 2013-07-30 17:25:02

如果你不让关联在它所属的插件中查找模型,它就找不到模型,这是正常的。这不是插件的问题,而是你的联想。

代码语言:javascript
复制
 'hasOne' => array(
            'Tagged' => array(
                'className' => 'Tags.Tagged',
                'foreignKey' => false,

请参见className的插件名前缀。标签模型也是如此。看那本书。

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

https://stackoverflow.com/questions/17952579

复制
相关文章

相似问题

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