首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从sub到sub关系的cakephp嵌套数组

从sub到sub关系的cakephp嵌套数组
EN

Stack Overflow用户
提问于 2014-08-03 06:44:45
回答 1查看 60关注 0票数 0

我需要从以下格式的4个表的结果

代码语言:javascript
复制
array(
       (int)0=>array(
              'Fee'=>array(
                     'id'=>'1',
                     'student_id'=>array(
                                   'id'=>'22',
                                    'name'=>'Jhon',
                                    'age'=>'15',
                                    'class_id'=>array(
                                               'id'=>'6',
                                               'class'=>'4th',
                                                ....
                                                ),
                                     ......
                                     ),
                       'paid'=>'2000',
                       'date'=>'2014-11-11 11:11:11',
                       'user_id'=>array(
                                  'id'=>'3',
                                  'name'=>'Smith',
                                   ....
                                   )
                      )
       )
 )

表的方式

代码语言:javascript
复制
fee.id, fee.paid, 
student.id,student.name,
class.name,
user.name

表结构和关联

代码语言:javascript
复制
fees(id,student_id,paid,date,...,user_id)

链接到学生表和用户表

代码语言:javascript
复制
students(id,user_id,class_id,....)

链接到用户表

代码语言:javascript
复制
classes(id,name,....)

属于学生

代码语言:javascript
复制
users(id,name,email,password,age,role....)

部分属于学生

某些记录用于管理员登录

虽然有些属于学生bcz,但他们也需要登录

我厌倦了尝试连接、包含、线程

如何获得所需的结果

EN

回答 1

Stack Overflow用户

发布于 2014-08-04 06:23:37

假设您的表和模型遵循了正常的命名约定,并且正确地设置了它们之间的关系,则如下所示:

代码语言:javascript
复制
$fees = $this->Fee->find('all',
    array(
        'fields' => array(
            'Fee.id',
            'Fee.paid',
            'Fee.date'
        ),
        'contain' => array(
            'Student' => array(
                'fields' => array(
                    'Student.id',
                    'Student.name',
                    'Student.age',
                ),
                'contain' => array(
                    'Class' => array(
                        'fields' => array(
                            'id',
                            'class'
                        )
                    )
                )
            ),
            'User' => array(
                'fields' => array(
                    'id',
                    'name'
                )
            )
        )
    )
);

将产生:

代码语言:javascript
复制
$fees = array(
    (int)0 => array(
        'Fee' => array(
            'id' => 1,
            'paid' => '2000',
            'date' => '2014-11-11 11:11:11',
            'Student' => array(
                'id' => 22,
                'name' => 'John',
                'age' => '15',
                'Class' => array(
                    'id' => 6,
                    'class' => '4th'
                )
            ),
            'User' => array(
                'id' => 3,
                'name' => 'Smith'
            )
        )
    ),
    (int)1 => //next Fee
);

如果您仍然需要数组,那么使用php对数组进行一些重新排列并不太复杂。

附注:您需要在您设置的学生、班级和用户模型上执行此操作:

代码语言:javascript
复制
public $actsAs = array('Containable');

为了使查询的“包含”部分起作用:)

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

https://stackoverflow.com/questions/25100049

复制
相关文章

相似问题

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