Tl;Dr:如何创建一个数组;从两个表;与hasMany和belongsTo关联;到foreach through;与CakePHP;最佳。
编辑:从(http://book.cakephp.org/view/872/Joining-tables)这是我试图学习如何做的,虽然它说“hasOne”而不是hasmony。。。。
在CakePHP中,某些关联(belongsTo和hasOne)执行自动联接以检索数据,因此您可以根据相关关联中的数据发出查询以检索模型
我试图通过一个数组foreach,该数组理想地包含两个具有hasMany和belongsTo关系的表中的数据。我知道CakePHP有内置的功能,可以使这个过程非常简单,我想使用它:
-
旅行有很多腿
-
属于旅行的腿
所以,我想创建一个包含两个表中数据的数组,这样我就可以轻松地在视图中显示数据。请注意,在包含find参数的数组中没有关于联接的内容。我认为CakePHP在创建关联时会连接表;我只是不确定在创建数组时如何访问这些关联。
(我已经花了好几个小时在这上面了,但是在网上或者书本上找不到这样做的例子,所以谢谢你的帮助)。我可以绕过这一点(通过创建一个单独的数组和一个复杂得多的视图文件),但我刚刚开始学习编程,并希望以某种最佳方式完成它,并使用CakePHP的功能。
提前谢谢你的帮助!对于这些关联(belongsTo和hasMany),我不必在controller/find()中显式声明连接,这难道不对吗?现在,我可能会尝试手动创建连接,看看会发生什么。
现有代码(这很好):
跳闸控制器:
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')));
视图:
<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;?>
再次感谢!