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