Как я могу ограничить вывод запроса CakePHP?

#php #mysql #cakephp

#php #mysql #cakephp

Вопрос:

Я пытаюсь изучить CakePHP и пытаюсь повторить то, что я могу сделать со стандартным PHP и MySQL с помощью Cake.

У меня есть event таблица с информацией о событии и list_items таблица, содержащая записи для списка с маркерами, который будет отображаться на каждой странице события. list_items Таблица состоит из 3 столбцов: id , event_id , listinfo . Последняя строка должна отображаться.

Я связал две таблицы:

 class Event extends AppModel{

    public $hasMany = array(
        'ListItem'
        );

}
  

и:

 class ListItem extends AppModel{

    public $belongsTo = array(
        'Event'
    );

}
  

и контроллер событий имеет запрос для поиска события на основе идентификатора:

 public function view($id = null){
if (!$id){
throw new NotFoundException(__('Invalid Course'));
}

$event = $this->Event->findById($id);
if (!$event){
throw new NotFoundException(__('Invalid event'));
}
$this->set('event',$event);

}
  

У меня настроено представление:

   <?php 

    foreach($event['ListItem'] as $listItem):
       echo $this->Html->nestedList($listItem);
    endforeach; ?>
  

Моя проблема в том, что это выводит все в list_items :

 1
1
This is list item 1
2
1
This is list item 2
  

например, ключи и фактическая строка.

Как я могу ограничить вывод только строкой? Я немного смущен тем, как работают ассоциации (черт возьми, и MVC в целом).

Ответ №1:

Html::nestedList() используется для ассоциативных массивов, не индексируется.

Приведенный пример cake показывает, когда вы будете его использовать.

В вашем случае вы бы сделали это:

 foreach($event['ListItem'] as $listItem):
   echo 'ListItem ID: ' . $listItem['id'] . ' is ' . $listItem['listinfo'] . 
        ' and belongs to Event:' . $listItem['event_id'];
endforeach;
  

Если вы сделаете debug($event); что-то в своем представлении, вы увидите, как именно выглядят данные, и это может помочь вам лучше визуализировать ассоциации.