首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP 2.0 -如何从containable中删除连接表

CakePHP 2.0 -如何从containable中删除连接表
EN

Stack Overflow用户
提问于 2011-11-01 02:23:27
回答 1查看 1.6K关注 0票数 0

我在类似这样的操作中使用了Containable:

代码语言:javascript
复制
public function index()
{
    $this->User->recursive = -1;
    $this->User->Behaviors->load('Containable');

    if ($this->RequestHandler->accepts('xml'))
    {
        $this->set('users', array("Users" => array("UserEntry" => $this->User->find('all',
            array(
                'fields' => array('User.id','User.username', 'User.email', 'User.created', 'User.modified'),
                'contain' => array(                        
                    'Group' => array(
                        'fields' => array('Group.id','Group.name','Group.created'),
                    )
                )
            )            
        ))));
    }
    else if ($this->RequestHandler->accepts('json'))
    {
    }
    else if ($this->RequestHandler->accepts('html'))
    {
        $this->set('users', $this->paginate());
    }
}

它得到了我需要的所有数据,但有一件事我搞不懂。在具有连接表users_groups的用户和组之间存在HABTM关系。我将find('all')的输出序列化为Xml,用于视图中的REST Api。问题是数据包含一个额外的'GroupsUser‘数组,嵌套在我的'Groups’数组中。Api的用户不需要知道连接表信息,所以我想删除它。当前输出如下所示:

index.ctp

代码语言:javascript
复制
<?php
    //debug($users);

    $xml = Xml::build($users, array('return' => 'domdocument'));
    echo $xml->saveXML();
?>

index.ctp -> http://www.pastie.org/2789367的输出

看到组标记中嵌套的GroupsUser标记了吗?这就是我想要删除的。如果没有简单的方法可以做到这一点,我将使用视图中的一些循环手动构建xml,或者在模型中创建我自己的find方法,然后在GroupsUser上使用unset()。这两个解决方案都不是理想的,所以我希望这里有人有更好的解决方案。:)

EN

回答 1

Stack Overflow用户

发布于 2011-11-01 20:40:27

如果您确信所有的工作都在一个连接(只有belongsTo关联)中完成,那么您可以使用带有自动字段的可包含组件,就像下面这样

代码语言:javascript
复制
$this->Post->Behaviors->attach('Containable', array('autoFields' => false));

(这是将它动态地附加在控制器部分中。

如果你的find有hasMany关联,你将有2个查询,而不是cake,因此需要为这个字段获取连接。对于这种情况,您也可以使用linkable组件,它将所有内容放在joins中,而不是大量的查询,让您有机会只选择您想要的字段。

以下是linkable component的链接

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

https://stackoverflow.com/questions/7957939

复制
相关文章

相似问题

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