Cakephp – 包含(可包含的行为)取得太多
发布时间:2020-12-13 17:25:20 所属栏目:PHP教程 来源:网络整理
导读:正如我从cakephp文档中所理解的那样,’containable’-Behavior的一个优点是,如果你需要更少的数据,它可以获取更少的数据…… 但在我的用户和用户组之间的连接中,这似乎不起作用. 我的关联看起来像: Group hasMany: Membership User hasMany: Membership Mem
正如我从cakephp文档中所理解的那样,’containable’-Behavior的一个优点是,如果你需要更少的数据,它可以获取更少的数据……
但在我的用户和用户组之间的连接中,这似乎不起作用. 我的关联看起来像: Group hasMany: Membership User hasMany: Membership Membership belongsTo: User,Group (我没有使用HABTM,而是使用两者之间的模型’Membership’来加入用户和组). 所有模型都实现了“可包含”行为. 现在我希望获得具有特定ID的组的所有成员,只有他们的ID和邮件地址.我的查询是这样构建的: $members = $this->Membership->find('all',array( 'conditions' => array( 'group_id' => $id ),'contain' => array( 'User' => array( 'fields' => array('id','fullName') ),) )); 但结果数组看起来像: array( (int) 0 => array( 'Membership' => array( 'id' => '1','group_id' => '1','user_id' => '1','role' => 'member' ),'Group' => array( 'id' => '1','name' => 'Foo Group' ),'User' => array( 'password' => '*****','id' => '1','name' => 'Dr. Foo' 'mail' => 'foo@bar.baz','role' => 'admin' ) ) ) 所以有更多的字段取出比我想要的更多…(这与我设置’包含’键的方式相同: 'contain' => array( 'User.fullName','User.id' ) 我使用包含行为错了吗? 解决方法
你的模型似乎根本没有表现出来.您是否将模型设置为可包容?
class Post extends AppModel { public $actsAs = array('Containable'); } 如果是这样,可能问题在于递归(以避免使用查询获取Group数组).可包含的行为应该自己处理递归级别,但尝试在AppModel上设置它只是为了确定 class AppModel extends Model { public $actsAs = array('Containable'); public $recursive = -1; 你的第一次尝试 'contain' => array( 'User' => array( 'fields' => array('id','fullName') ),) 在语法方面看起来很好,所以它可能是actAs的事情. 另外,为了调试,请尝试 $this->Membership->contain('User'); $this->Membership->find('all',array( 'conditions' => array( 'group_id' => $id )); 并看看你是否以这种方式获得了预期的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |