我想要使用ORM訪問存儲的數據,在三個mysql表'用戶','項目'和許多關係的數據透視表:'user_item'Kohana 3 ORM:如何從數據透視表中獲取數據?和所有其他表
我跟着從Kohana 3.0.x ORM: Read additional columns in pivot tables
指導,並試圖
$user = ORM::factory('user',1);
$user->items->find_all();
$user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user->items));
if ($user_item->loaded()) {
foreach ($user_item as $pivot) {
print_r($pivot);
}
}
但我得到的SQL錯誤:
"Unknown column 'user_item.id' in 'order clause' [ SELECT
user_item
.* FROMuser_item
WHEREuser_id
= '1' ANDitem_id
= '' ORDER BYuser_item
.id
ASC LIMIT 1 ]"
這顯然是錯誤的,因爲Kohana試圖通過不存在的列來排列元素:user_item.id。此ID不存在,因爲此數據透視表的主鍵是另外兩個表(「用戶」和「項目」)的外鍵。
嘗試使用:
$user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user->items))
->order_by('item_id', 'ASC');
沒什麼區別,因爲它似乎在order_by()
或者如果工廠的第二個參數給出任何SQL查詢被忽略。
該查詢的另一個明顯錯誤是item_id ='',它應該包含所有元素。
所以我的問題是我怎樣才能訪問存儲在數據透視表的數據,實際上我怎樣才能訪問特定用戶舉行,我甚至有與該問題的所有項目?
感謝
你爲什麼要做'$ user-> items-> find_all()'?也許你忘了包含一個'foreach'語句(或類似的語句)來迭代find_all()方法的結果。 – dusan 2010-05-24 02:42:05