Kohana 2.3.4 вопрос об обновлении ORM - PullRequest
1 голос
/ 17 декабря 2009

Я пытаюсь обновить запись, используя библиотеку ORM, встроенную в Kohana 2.3.4. Я в основном модифицирую скрипт, который я использую для вставки записи. Моя проблема в том, что запись вставляется снова, а не обновляется. Вот мой сценарий:

        public function edit($id)
        {
            // Find the selected blog entry
            $blog = ORM::factory('article')->where('id',$id)->find();

            //other code to view data from $blog

            // Write the changes to the db for this id
            $title = $this->input->post('title');
            $content = $this->input->post('text_content');

            if(!empty($title) && !empty($content))
              {

            $edit_blog = ORM::factory('article')->where('id',$id);
            $edit_blog->title = $title;
            $edit_blog->content = $content;

            if($edit_blog->save())
                {
                    url::redirect('admin/dashboard/blog/manage');
                }
              }

Я просмотрел документацию, которую предоставляет Кохана, но не могу найти пример обновления записей. Я думал, что аргумент $ id, переданный методу редактирования, выберет уже существующую запись и обновит ее, но он просто вставит новую. Любая помощь? спасибо!

1 Ответ

1 голос
/ 17 декабря 2009

Кажется, вы забыли добавить метод find () при создании объекта $ edit_blog. Между прочим, нет необходимости создавать еще один, вы можете повторно использовать объект блога, который вы создали в первую очередь (здесь используется слегка сокращенный синтаксис):

public function edit($id)
            {
                    // Find the selected blog entry
                    $blog = new Article_Model($id);

        //other code to view data from $blog

                    // Write the changes to the db for this id
                    $title = $this->input->post('title');
                    $content = $this->input->post('text_content');

                    if(!empty($title) && !empty($content))
                      {

                    $blog->title = $title;
                    $blog->content = $content;

                    if($blog->save())
                            {
                                    url::redirect('admin/dashboard/blog/manage');
                            }
          }

Также вы должны рассмотреть возможность использования библиотеки валидации внутри вашей модели.

...