2013-08-16 88 views
0

有沒有辦法在沒有任何額外查詢的情況下使用ORM模型更新表中的記錄?如何在不加載orm的情況下更新記錄?

我知道我可以簡單地使用DB對象來做原始查詢,但我想用ORM對象來做。

我有以下代碼。

$orm = ORM::factory("myobject",1); 
$orm->name = "new name"; 
$orm->save(); 

代碼的問題在於它執行select查詢然後執行更新查詢。

我試過以下。

ORM::factory("myobject")->values(array("id"=>1, "name"=>"my new name"))-save(); 

此查詢的問題是,ORM執行「顯示從MyObject的全列」

如何使一個ORM對象上的更新查詢,而無需執行任何額外查詢?

回答

1

您得到show full columns for ..查詢的原因是您沒有定義$_table_columns,其中存儲了該對象的表列數據。 Kohana需要知道這些,以便您可以爲該對象設置值。

E.g.

protected $_table_columns = array(
    'id' => array('type' => 'int'), 
    'name' => array('type' => 'string'), 
    ....... 
); 

並回答你的問題。第二種方式似乎是正確的方式:)只要你做了上述的'額外'查詢應該消失

相關問題