2012-05-02 7 views
1

Kohana 3.2のORMで複数のレコードを更新するにはどうすればよいですか?この例ではKohana 3.2 ORM複数レコードの更新

$menu = ORM::factory('menu'); 
$menu->where('active','=',1); 
$menu->active=2; 
$menu->save(); 

が動作しない、それは新しいレコードを挿入します。

おかげ

+0

以下のようなものは、この使用してORMを行うと、ビルダーを照会ないしたい何らかの理由はありますか? – Tadeck

+0

アプリケーションは、 "Model_Menu extends ORM"クラスを使用しているため、alredyです。 – Vincent

+0

これは引数ではありません。 KohanaのORMはクエリビルダに基づいているため、クエリビルダ機能のサブセットのみをサポートしています。生のクエリビルダを使用すると、レコードごとに個別のクエリを使用するのではなく、単一のSQLクエリで必要なものを設定できます。 1)読みやすさに関する懸念(下位のクエリービルダーレイヤーではなくORMレイヤー上でタスクを実行する)、2)モデル内で囲まれたカスタムビジネスロジック(例えば、save()内にあるカスタムビジネスロジック、 'メソッド)。ここでどちらのケースですか? – Tadeck

答えて

2

あなたは多分、テーブル名をハードコーディングしたくない場合は

DB::update(ORM::factory('menu')->table_name()) 
->set(array('active' => '2')) 
->where('active', '=', '1') 
->execute(); 
関連する問題