Cake PHP 2.x: Получение данных HABTM возвращает объединенную таблицу, даже когда я ограничиваю поля - PullRequest
0 голосов
/ 05 мая 2020

У меня определена следующая модель: (В группе может быть много мониторов, и многие мониторы могут быть частью одной и той же группы)

class Group extends AppModel {
 <etc etc>

   public $hasAndBelongsToMany = array(
        'Monitor' => array(
            'className' => 'Monitor',
            'joinTable' =>  'Groups_Monitors',
            'foreignKey' => 'GroupId',
            'associationForeignKey' => 'MonitorId',
            'unique'=>true,
            'dependent' => false,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'exclusive' => '',
            'finderQuery' => '',
            'counterQuery' => ''
        ),
  );
  var $actsAs = array( 'Containable' );
}

Объект «Монитор» большой - у него много свойств. Теперь я хочу создать запрос по группам, который возвращает данные группы, а также только поля «Id» и «Name» связанного объекта Monitor.

Мой код для этого выглядит следующим образом:

внутри GroupsController.php

public function index() {
        $this->Group->recursive = -1;
        $groups = $this->Group->find('all', array(
                                              'contain'=> array(
                                                 'Monitor' =>array (
                                                      'fields'=>array ('Name', 'Id')
                                                 )
                                               )
                                     ));

         $this->set(array(
                        'groups' => $groups,
                        '_serialize' => array('groups')
        ));
}

Когда я пытаюсь получить эти данные по URL-адресу https://mydomain/api/groups.json

, я получаю:

{"groups":[{"Group":{"Id":"1","Name":"test","ParentId":null},"Monitor":[{"Name":"Garage","Id":"1","GroupsMonitor":{"Id":"5","GroupId":"1","MonitorId":"1"}}]},{"Group":{"Id":"2","Name":"test2","ParentId":null},"Monitor":[{"Name":"Garage","Id":"1","GroupsMonitor":{"Id":"3","GroupId":"2","MonitorId":"1"}},{"Name":"Unfinished","Id":"9","GroupsMonitor":{"Id":"4","GroupId":"2","MonitorId":"9"}}]}]}

Почему Поле "GroupsMonitor" появляется, когда я явно указал только Monitor.Id и Monitor.Name? Как мне избежать получения "GroupsMonitor"?

Спасибо

...