1
我在ORM中使用Kohana 3.0.6。SQL加入Kohana ORM
我有一個名爲「卡車」的模型,在他的表中有一個與他的製造商(「製造商」)的ID列。然後我在他的桌子上有「製造商」模型,其ID和名稱。
我試圖做一個簡單的左加入,當我顯示的卡車上市,所以我可以直接得到他們的製造商的名稱。
這裏是我的「卡車」的模式:
<?php defined('SYSPATH') or die('No direct access allowed.');
class Model_Truck extends ORM {
// Database settings
protected $_db = 'default';
protected $_table_name = 'trucks';
protected $_primary_key = 'id';
//Tried adding this but doesn't seems to work
protected $_has_one = array('maker' => array('model' => 'maker'));
// Table fields
protected $_table_columns = array(
'id' => array('data_type' => 'int', 'is_nullable' => FALSE),
'serial' => array('data_type' => 'string', 'is_nullable' => FALSE),
'maker' => array('data_type' => 'string', 'is_nullable' => FALSE),
'model' => array('data_type' => 'string', 'is_nullable' => FALSE),
'year' => array('data_type' => 'int', 'is_nullable' => FALSE),
);
}
正如你所看到的,我用這行添加「HAS_ONE」,雖然我也看到了「有()」呼叫某處,但不能使它工作(doc是有點缺乏,特別是對於版本3.xx)。
protected $_has_one = array('maker' => array('model' => 'maker'));
下面是我使用的視圖中的輸出線的製造商名稱(類似的規定):
foreach ($trucks as $t) {
echo($t->maker->name);
}
沒有,因爲每個製造商沒有一輛卡車......但每輛卡車只有一個製造商。我在卡車表中有一個名爲「製造商」的專欄,我在「has_one」排列中找到它,除非我錯誤。 – Ceb 2010-07-02 20:31:04
如果您的卡車has_one Maker,則外鍵進入Maker表格。如果您的卡車屬於製造商,那麼外鍵將進入卡車表。你上面的代碼表明Truck has_one Maker,這就是我問的原因。我認爲你應該改變你的模型,讓卡車屬於製造商和製造商has_many卡車。 – slacker 2010-07-11 22:05:36