#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);
что-то в своем представлении, вы увидите, как именно выглядят данные, и это может помочь вам лучше визуализировать ассоциации.