当前位置: 首页 > 知识库问答 >
问题:

不能连接表HABTM和多对一,cakephp

边翔宇
2023-03-14

我无法使用联接从的表关系中获取所需的数据

学生HABTM科目,监护人1对多学生

在没有给出所有代码的情况下,我的查找得到了所需的数据,但它添加了另一个表(可用性为学生),该表与学生以及其他字段有HABTM关系。我只是得到了太多的数据。我必须添加守护者2到守护者表,以避免冲突,我不明白。

仅显示3个表中数据的正确连接是什么?

   $students = $this->find('all', array(
            'joins'=>$joins,
                'conditions'    => $conditions,
              'fields'=> $fields,

              'order'=>$order,
            ));


      $joins = array(

                 array('table' => 'students_subjects',
                            'alias' => 'StudentsSubject',
                            'type' => 'LEFT',
                            'conditions' => array(
                            'Student.id=StudentsSubject.student_id',
                     )
                     ),     
                array('table' => 'subjects',
                            'alias' => 'Subject',
                            'type' => 'LEFT',
                            'conditions' => array(
                            'StudentsSubject.subject_id=Subject.id',
                     )
                     ),
               array('table' => 'guardians',
                    'alias' => 'Guardian2',
                    'type' => 'LEFT',
                    'conditions' => array(
                    'Student.guardian_id=Guardian2.id',
                     )
                     ),

                );



    (int) 0 => array(
        'Student' => array(
            'id' => '267',
            'last_name' => 'xxx',
            'first_name' => 'xxx',
            'address_suburb' => 'xxx',
            'student_inactive' => false,
            'student_mobile' => '0'
        ),
        'Guardian' => array(
            'guardian_last_name' => 'xx',
            'guardian_first_name' => 'xxxx',
            'id' => '267',
            'guardian_mobile' => 'xxxx',
            'guardian_email' => 'xx@yahoo.com.au'
        ),
        'Subject' => array(
            'name' => 'English: Year 7 - 10',
            (int) 0 => array(
                'id' => '9',
                'name' => 'English: Year 7 - 10',
                'StudentsSubject' => array(
                    'id' => '1079',
                    'student_id' => '267',
                    'subject_id' => '9',
                    'created' => null,
                    'modified' => null
                )
            )
        ),
        'StudentsSubject' => array(
            'id' => '1079'
        ),
        'AvailabilityForStudent' => array(
            (int) 0 => array(

更新-添加此行$this-

共有1个答案

焦宏硕
2023-03-14

更新-添加此行$this-

 类似资料:
  • 我有一个JavaAPI(使用Spring Framework),我的前端使用它来创建新的父对象(json),其中包含一个新的子对象列表,如下所示: 如您所见,没有ID,因为我即将保存它们,并且数据库应该生成ID。 父实体在后端具有以下代码: 在我调用存储库上的父级保存操作后,我可以在数据库中找到子元素(所以级联工作),但是数据库中的子级的父级列为空,因此当我获取父级时,它的子级列表显示为空。 我可

  • 我的数据模型中有以下实体关系。 ERD Hibernate实体: 要求:我想用实体B的连接获取查询实体C,同时也急切地获取实体D。查询完成后,我希望如果我执行,它不应导致hibernate中的N 1查询问题。 我正在尝试以下JPQL查询: 这导致结果重复,因为与实体D交叉连接。我得到的不是一个结果,而是n个结果,其中n是实体D列表的大小。 我该如何避免这种情况?有没有办法在JPQL中不交叉连接地获

  • 在我的应用程序中,用户和首选项实体之间存在多对多关联。由于连接表需要一个额外的列,因此我必须将其分解为2个一对多的关联: 用户实体: 偏好实体: 用户首选项实体: 为了更新其中一个首选项,我循环浏览用户的一组首选项,并更新值如下: 我已经确认,我试图更新的用户变量在代码运行后确实包含新值。更奇怪的是,当重定向发生时,该值会在网页上更新,但数据库不会更新!这是我用来做更新的代码,这个类用@Trans

  • 我有许多对许多用户与城市地区之间的联系。我也有连接城市区域的区域(一个城市区域只能连接一个区域)。 我有这样的数据库结构: 使用者 id 城市地区 id 姓名 area_id 城市用户 id cityarea_id user_id 地区 id 姓名 接下来我有模特 用户 城市地区 地区 问题: 如何让所有用户与雄辩? 谢谢!!

  • 问题内容: 我在与JoinTables进行双向一对多关联时遇到了一些问题。这就是我得到的: A类: B类: 如果创建A和B的实例,请将B的实例添加到A并保存。有用。但是,当我重新加载A的实例并尝试访问B的集合时,它将引发LazyInitializationError并显示消息“对加载集合的非法访问”。 我在哪里错了?:)谁能指出我一个使用联接表的双向关联示例。在所有权保留为A类的地方,我搜索了hi

  • 我有2个具有多对多关系的实体User和AcCountBase。我需要从连接表中选择所有具有选定用户ID的AcCountBase对象。我尝试了一些连接查询,但不起作用。