Tl; Dr: Как создать один массив;из двух таблиц;с hasMany и принадлежит к ассоциациям;прорваться сквозь;с CakePHP;оптимально.
РЕДАКТИРОВАТЬ: С (http://book.cakephp.org/view/872/Joining-tables) Это то, что я пытаюсь научиться делать, хотя он говорит "hasOne", а не hasMany ....
"В CakePHP некоторыеСвязи (ownTo и hasOne) выполняют автоматическое объединение для извлечения данных, поэтому вы можете создавать запросы для извлечения моделей на основе данных в связанном. "
Я пытаюсь выполнить поиск через массив, который в идеале будет содержать данныеиз двух таблиц, которые имеют отношение hasMany и serveTo. Я знаю, что CakePHP имеет встроенную функциональность, чтобы сделать это очень простым, и хотел бы использовать его:принадлежа к поездкам
Итак, я хочу создать массив, содержащий данные из обеих таблиц, чтобы я мог легко отображать данные в представлении. Обратите внимание, что нет ничего о присоединении в массиве, который содержит параметры поиска. IЯ думаю, что CakePHP объединяет таблицы, когда я создаю ассоциации; я просто не знаю, как получить доступ к этим ассоциациям при создании массива.
(я потратилОб этом уже говорилось, и мы не смогли найти пример того, как сделать это в Интернете или в книгах, так что спасибо за вашу помощь).Я мог бы обойти это (создав отдельный массив и получив гораздо более сложный файл представления), но я только начинаю учиться программировать и хотел бы сделать это несколько оптимально и использовать функциональность CakePHP.
Заранее спасибо за помощь!Разве я не прав, что с этими ассоциациями (ownTo и hasMany) мне не нужно явно объявлять объединения в controller / find ()?Я мог бы, на данный момент, попытаться вручную сделать объединения, чтобы увидеть, что происходит.
Существующий код (это прекрасно работает):
trips_controllers:
function view() {
if(empty($this->data)){
$this->Session->setFlash('You forgot to put stuff in the form fields!');
$this->redirect(array('action'=>'index'));
}
$price=$this->data['Trip']['price'];
$origin=$this->data['Trip']['origin_airport'];
$this->set('trips', $this->Trip->find('all', array('conditions'=>array('Trip.price <='=>$price, 'Trip.origin_airport'=>$origin), 'limit'=>30, 'recursive=>2')));
view:
<th>Trip ID</th>
<th>Price</th>
<th>Origin</th
</tr>
<? foreach($trips as $trip):?>
<tr>
<td><?=$trip['Trip']['trip_id'];?></td>
<td><?=$html->link($trip['Trip']['url']); ?>
<td><?=$trip['Trip']['origin_airport'];?></td>
<td><?=$trip['Trip']['price'];?></td>
</tr>
<? endforeach;?>
Еще раз спасибо!