Tl; Dr:如何创建一个数组;来自两张桌子;与hasMany和belongsTo联合;通过;与CakePHP;最佳。加入表CakePHP belongsTo,hasMany
编辑:从(http://book.cakephp.org/view/872/Joining-tables)这是我试图学习如何做,虽然它说“hasOne”,而不是hasMany ...
“在CakePHP中,一些关联(belongsTo和hasOne)执行自动连接来检索数据,因此您可以根据相关数据中的数据发出查询来检索模型。”
我试图通过一个数组,将理想地包含来自两个表具有hasMany和belongsTo关系的数据。我知道,CakePHP有功能内置的以使这个非常简单的,想使用它:
- 游的hasMany腿
- 腿属于关联车次
所以,我想使包含数组来自两个表的数据,以便我可以轻松地在视图中显示数据。请注意,加入包含查找参数的数组中没有任何内容。我认为CakePHP在创建关联时加入表格;我只是不确定如何在创建数组时访问这些关联。
(我已经花了几个小时了,找不到如何在网上或书本上做的例子,所以感谢您的帮助)。我可以解决这个问题(通过创建一个单独的数组并且有一个更复杂的视图文件),但我刚开始学习编程,并希望在某种程度上做到最佳并使用CakePHP的功能。
在此先感谢您的帮助!我不正确的是,通过这些关联(belongsTo和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')));
观点:
再次<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;?>
谢谢!
您能澄清一下当前``trip`数组中你从标准的`find`调用中遇到什么问题,以及为什么你不能按照你想要的方式循环? – deceze 2010-11-23 23:43:03
Thanks Deceze。您的评论让我觉得他们现在应该可以访问了。如果第二个表的数据在那里,那么我将如何在foreach中访问它们?当我等待您的回复时,我会尝试$ trip ['2ndtablename'] ['fieldname']。 – JohnAllen 2010-11-24 00:12:41