0

我有 5 张桌子:

  1. 表单->(字段:id,名称)HasMany(表单)

  2. Field -> (fields : id , type , name , form_id) HasMany (Fvarchar,Ftext,Ftinyint) BelongsTo (Form)

  3. Fvarchar -> (fields : id , value , field_id) BelongsTo (Field)

  4. Ftext -> (fields : id , value , field_id) BelongsTo (Field)

  5. Ftinyint -> (fields : id , value , field_id) BelongsTo (Field)

我想查找表单,Field[name]->Fvarchar,Ftext,Ftinyint[value]但现在当我尝试查找表单时,我的结果如下:

$this->Form->find('all',array('contain' => array('Field'=>array('Fvarchar','Ftext','Ftinyint'))

'Form' => array(
            'id' => '1',
            'name' => 'mobile',
            'Field' => array(
                (int) 0 => array(
                    'name' => 'bluetooth',
                    'type' => 'Ftinyint',
                    'id' => '1',
                    'form_id' => '1',
                    'Ftext' => array(),
                    'Fvarchar' => array(),
                    'Ftinyint' => array(
                        (int) 0 => array(
                            'value' => true,
                            'id' => '2',
                            'field_id' => '1'
                        )
                    )
                ),

但我想用 Field[type] 过滤表(Ftext,Fvarchar,Ftinyint):

'Form' => array(
            'id' => '1',
            'name' => 'mobile',
            'Field' => array(
                (int) 0 => array(
                    'name' => 'bluetooth',
                    'type' => 'Ftinyint',
                    'id' => '1',
                    'form_id' => '1',
                    'Ftinyint' => array(
                        (int) 0 => array(
                            'value' => true,
                            'id' => '2',
                            'field_id' => '1'
                        )
                    )
                ),

谢谢

4

1 回答 1

0

我很难理解您的问题是什么(抱歉,我可以看到英语不是您的第一语言)但我将其解释为您想要包含 Field 模型的意思,其中类型是您拥有的这三个模型之一指定的?

这有帮助吗?

$this->Form->find('all',array(
    'contain' => 'Field',
    'conditions' => array(
        'Field.type' => array(
            'OR' => array('Fvarchar', 'Ftext', 'Ftinyint')
        )
    )
));

当然,未经测试。但类似的东西。

于 2012-10-17T17:00:49.820 回答