【问题标题】:Multiple data Cake Paginator Query Result多数据 Cake Paginator 查询结果
【发布时间】:2014-03-19 03:40:54
【问题描述】:

在 Cake 中使用 Paginate 后得到以下结果:

  array(
        (int) 0 => array(
            'DestinationPhoto' => array(
                'id' => '1',
                'name' => 'picture.jpg',
                'destination_id' => '2'
            ),
            'Destinations' => array(
                'id' => '2',
                'country_id' => '2'
            ),
            'DestinationIdiom' => array(
                'id' => '3',
                'name' => 'TestName-1',
                'description' => 'TestDescription',
                'idiom' => 'English',
                'destination_id' => '2'
            )
        ),
        (int) 1 => array(
            'DestinationPhoto' => array(
                'id' => '1',
                'name' => 'picture.jpg',
                'destination_id' => '2'
            ),
            'Destinations' => array(
                'id' => '2',
                'country_id' => '2'
            ),
            'DestinationIdiom' => array(
                'id' => '4',
                'name' => 'TestName-2',
                'description' => 'TestDescription-2',
                'idiom' => 'Spanish',
                'destination_id' => '2'
            )
        )
)

似乎我在同一结果中有多个“DestinationPhoto”实例,由不同“DestinationIdiom”引起的“Destination”,是否可以将两个“DestinationIdiom”加入以显示为分页器的相同结果?喜欢

 array(
        (int) 0 => array(
            'DestinationPhoto' => array(
                'id' => '1',
                'name' => 'huehuehuehuh.jpg',
                'destination_id' => '2'
            ),
            'Destinations' => array(
                'id' => '2',
                'country_id' => '2'
            ),
            'DestinationIdiom' => array(
                (int) 0 => array( 
                                    'id' => '3',
                        'name' => 'TestName-1',
                        'description' => 'TestDescription',
                        'idiom' => 'English',
                        'destination_id' => '2'
                                    )
                (int) 1 => array( 
                                    'id' => '3',
                        'name' => 'TestName-2',
                        'description' => 'TestDescription',
                        'idiom' => 'Spanish',
                        'destination_id' => '2'
                                    )
            )
        )

)

在 DestinationPhoto 控制器中,我有以下内容:

        $this->paginate = array(
        'fields'=>array('DestinationPhoto.*','Destinations.*','DestinationIdiom.*'),
        'joins' => array(
            array(
                'table' => 'destinations',
                'alias'=>'Destinations',
                'type' => 'LEFT',
                'conditions' => '`DestinationPhoto`.`destination_id` = `Destinations`.`id`'
            ),
            array(
                'table' => 'destination_idioms',
                'alias'=>'DestinationIdiom',
                'type' => 'LEFT',
                'conditions' => '`DestinationIdiom`.`destination_id` = `Destinations`.`id`'
            )
        ),
        'limit' => 20
    );

【问题讨论】:

    标签: cakephp pagination cakephp-2.4 paginator


    【解决方案1】:

    使用模型命名约定。改为Destination 而不是Destinations

    在运行时绑定模型关联,如下所示:

    $this->paginate = array(
        'joins' => array(
            array(
                'table' => 'destinations',
                'alias'=>'Destination',
                'type' => 'LEFT',
                'conditions' => '`DestinationPhoto`.`destination_id` = `Destinations`.`id`'
            )),
        'limit' => 20,
        'recursive' => '2'
        );
    
        $this->DestinationPhoto->Destination->bindModel(array('hasMany' => array('DestinationIdiom' => array('className' => 'DestinationIdiom',
                                                                                                             'foreignKey' => 'destination_id'))), false);
        $result = $this->paginate('Destination');
        pr($result);
        die;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      相关资源
      最近更新 更多