开发者

Kohana ORM Update not working

I开发者_开发知识库 have discovered Kohana just 2 days ago and, after facing a few problems and managing to deal with them, I ran into a quite strange one. When I try to update an entry in DB, instead of updating the entry ORM just inserts a new row. Everything is similar to this example http://kohanaframework.org/3.0/guide/orm/examples/simple

My code (controller file):

class Controller_Admin extends Controller {
   ...
   public function action_test($id)
   {
      $inquiry = ORM::factory('inquiry')->where('Id', '=', $id)->find(); // $inquiry  = Model_Inquiry($id) doesn't work, too
      $inquiry ->Name = 'Someone';
      $inquiry ->save();
   }
   ...
}

Model file:

class Model_Inquiry extends ORM
{
    protected $_table_name = 'mytable';
}   

Do you have any ideas why it's inserting a new entry instead of updating the old one? I read that it's because the ID is not correctly set, but I tried using a fixed value (->where('Id', '=', 5)) and it didn't work (it still inserted a new row).

Thanks in advance!


Your record isn't loaded in the first place. To check if it's loaded, do:

if ($inquiry->loaded()){...

Also, you can check what query has been run by doing:

echo $inquiry->last_query();

So you can manually check what exactly is being returned to ORM.

The main problem here is that you're using save() instead of being more strict and using create() / update(). If you used update(), ORM would throw an exception complaining about the record not being loaded.

Save is basically a proxy to these methods, relying on the loaded state.

(I assume that you're using Kohana 3.1 since 3.0 ORM doesn't have separate update / create methods at all)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜