Cakephp 3如何通过其他表来排序结果

时间:2017-03-24 21:43:53

标签: php mysql cakephp-3.0

我正在使用Cakephp 3并且我面临着排序结果的问题

表格

  1. 参与者
  2. 职业
  3. 事件
  4. sorting_settings
  5. 每位参与者都有职业

    每个事件都有sorting_settings

    排序设置表

    id ------- occupation_id ---------- sort_number ----------- event_id

    我想显示所有参与者 Participant.Events(属于Participant.sorting_settings。 sort_number asc我该怎么做?

    这是我试过的

     $query = $this->Participants->find('all')->contain(
                    ['Events'=>['Sorting_settings'=> ['sort' => ['Sorting_settings.sort_number' => 'asc']]],'Occupations'])
                ->where(
                    ['Participants.approved'=>false,
                    'Participants.is_sms_sent'=>false,
                    'Participants.is_cancel'=>false,
                    'Events.id'=>$eventID,
                    'gender'=>$gender])
                    ->order(['Participants.is_first_time , Sorting_settings.sort_number asc, desc,Participants.created asc '])
                     ->limit($limitEachTime);
                     foreach($query as $participantToSort){
    
                          //  debug($participantToSort);
                         echo $participantToSort->id." OC => ".$participantToSort->occupation_id."<br />";
                     }
    

1 个答案:

答案 0 :(得分:0)

我不确定这个排序号是什么,你的意思是订单吗?您是否尝试过TreeBehaviors可以创建菜单。我会将您的学期参与者更改为人,然后为所述活动参与者命名您的人员列表。

// sudo代码 ParticipantsTable

id - person_id - parent_id - event_id

//参与者控制器

 $descendants = $this->Participants
                    ->find('children', ['for' => $head])
                    ->find('threaded')   
                    ->where('event_id' => $id)

                    ->toArray();

    $this->set('participants', $descendants );

//在ParticipantsTable.php中初始化

    $this->addBehavior('Tree');

    $this->belongsTo('ParentMenus', [
        'className' => 'Participants',
        'foreignKey' => 'parent_id'
    ]);

    $this->hasMany('ChildMenus', [
        'className' => 'Participants',
        'foreignKey' => 'parent_id'
    ]);

在TreeBehaviors中阅读所有相关内容

对评论的回应

当你说排序数字时,我看到你指的是我称之为层级的数字。不止一个人可以使用相同的排序编号吗?

排序号是附属于职业吗?

如果你的卡住是向后开始的一招。

 Sort Table hasMany Occupants 
 Occupants hasMany Partcipants
 Partcipants hasMany Events

//须藤

  $this->SortSettings->find('all')->order([sortnumber => 'asc' ] )->where(sort.occupants.particpants.events => $id);