【问题标题】:cant get required fields from containable model cakephp无法从可包含模型 cakephp 中获取必填字段
【发布时间】:2015-03-24 23:01:07
【问题描述】:

我在监护人和学生之间有很多关系。监护人有许多学生。我无法从可包含对象学生那里获得必填字段,而是从学生那里获得所有内容,但我确实从 Guardian 获得了必填字段。

http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

   $this->Guardian->Behaviors->load('Containable'); 
    $guardians =$this->Guardian->find('all',array( 
                'contain'=>array('Student',
                    array( 'fields'=> array('Student.guardian_id,Student.id,Student.first_name' ))),

               'order' => array('guardian_first_name ASC'),
             'fields'=> array('Guardian.guardian_first_name,Guardian.guardian_last_name,Guardian.id' ),
               'recursive'=> -1      
              ));

array(
    (int) 0 => array(
        'Guardian' => array(
            'guardian_first_name' => '',
            'guardian_last_name' => '',
            'id' => '166'
        ),
        'Student' => array(
            (int) 0 => array(
                'id' => '166',
                'student_inactive' => true,
                'student_enq' => false,
                'student_unallocated' => false,
                'first_name' => 'Kala',
                'last_name' => 'narayanan',

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    fields 选项嵌套不正确,如果您正确格式化代码,您可能会注意到这一点,类似于以下内容:

    $this->Guardian->Behaviors->load('Containable'); 
    $guardians = $this->Guardian->find('all', array( 
        'contain' => array(
            'Student',
            array(
                'fields'=> array(
                    'Student.guardian_id,Student.id,Student.first_name'
                )
            )
        ),
        'order' => array(
            'guardian_first_name ASC'
        ),
        'fields' => array(
            'Guardian.guardian_first_name,Guardian.guardian_last_name,Guardian.id'
        ),
        'recursive'=> -1
    ));
    

    包含fields 选项的数组必须作为Student 键的值传递。

    // ...
    'contain' => array(
        'Student' => array(
            'fields'=> /* ...*/
        )
    ),
    // ...
    

    附带说明,当将字段作为逗号分隔的字符串传递时(这可能不是最好的主意),没有必要将它们传递到数组中。

    【讨论】:

    • 这不起作用,因为我得到了与以前相同的学生字段输出。顺便说一句,您的代码与我的代码没有什么不同
    • @ajt 为什么你希望代码相同时会发生任何变化?无论如何,请仔细阅读我的答案,第一块代码只是您的格式正确,这样您就可以看到您的错误,并可能意识到格式很重要。第二段代码有“修复”,也有文字说明。
    【解决方案2】:

    数组( '字段'=> 数组( 监护人ID,ID,名字' ) )

    使用没有模型名称的字段。

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      相关资源
      最近更新 更多