У меня определена следующая модель: (В группе может быть много мониторов, и многие мониторы могут быть частью одной и той же группы)
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"?
Спасибо