douzuanze0486 2014-07-16 15:03
浏览 28

Cakephp只获得过滤后的孩子

In my case User and questionnaires has many to many relationship. So i use user_questionnaires table to store users questionnaires.

I want get all users with user questionnaire row for some questionnaire.

My manual query like that.

SELECT `User`.`name` , `User`.`surname` , `User`.`email_personal` , `User`.`rf_id` , `User`.`gender` , `User`.`height` , `UserQuestionary`.`id`
FROM `woa`.`users` AS `User`
LEFT JOIN `woa`.`user_questionaries` AS `UserQuestionary` ON ( `UserQuestionary`.`user_id` = `User`.`id`
AND `UserQuestionary`.`questionary_id` =1 )
WHERE `User`.`role` =1

So i write following paginate query (I need pagination also) .

$paginate = array(
    'conditions' => array(
        'User.role' => 1,                
    ),
    'fields' => array(
        'User.name',
        'User.surname',
        'User.email_personal',
        'User.rf_id',
        'User.gender',
        'User.height',
        'UserQuestionary.id'
    ),
    'joins' => array(
        array(
            'alias' => 'UserQuestionary',
            'table' => 'user_questionaries',
            'type' => 'LEFT',
            'conditions' => 'UserQuestionary.user_id = User.id AND UserQuestionary.questionary_id = ' . $id
        )
    ),
    'limit' => 10,
    'order' => array(
        'name' => 'asc'
    ),
);

But it makes several queries and show unwanted data.

My model is

<?php
App::uses('AppModel', 'Model');

/**
 * UserQuestionariesUser Model
 *
 * @property User $User
 * @property Questionary $Questionary
 */
class UserQuestionariesUser extends AppModel
{
    //The Associations below have been created with all possible keys, those that are not needed can be removed

    public $useTable = 'user_questionaries';

    /**
     * hasAndBelongsToMany associations
     *
     * @var array
     */
    public $hasAndBelongsToMany = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'Questionary' => array(
            'className' => 'Questionary',
            'foreignKey' => 'questionary_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );
}

How can i do above query? Is it possible in Cakephp?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 关于多单片机模块化的一些问题
    • ¥30 seata使用出现报错,其他服务找不到seata
    • ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。
    • ¥20 程序只发送0X01,串口助手显示不正确,配置看了没有问题115200-8-1-no,如何解决?
    • ¥15 Google speech command 数据集获取
    • ¥15 vue3+element-plus页面崩溃
    • ¥15 像这种代码要怎么跑起来?
    • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
    • ¥15 pyqt5tools安装失败
    • ¥15 mmdetection