Kohana 3.2 ORM не содержит информацию о модели - PullRequest
0 голосов
/ 17 ноября 2011

Я работаю с Kohana 3.2 и у меня в контроллере следующий код:

  $Blog_Post = new Model_Blogpost();

  $Blog_Post->where('id', '=', 1);
  $Blog_Post->find();

  $content = $Blog_Post->content;

В настоящее время у меня есть 3 записи в моей БД с идентификаторами 1, 2 и 3.

$ Blog_Post-> content или любое другое поле возвращает значение null.и я не уверен почему.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011
  1. Используйте ORM::factory('blogpost', $id) или new Model_Blogpost($id), если вам нужен объект с PK == $ id.

  2. Проверьте вашу модель после загрузки.

  if $Blog_Post->loaded()
  {
       // it works!
  }
  else
  {
       // record not found
  }

Если запись не найдена, последний запрос к БД можно увидеть с помощью $Blog_Post->last_query()

UPD . Из комментариев. Ваша модель не будет работать с этими модификациями. Обратите внимание, что данные ORM хранятся в свойстве $_object, а $Blog_Post->content - это просто ярлык для $Blog_Post->_object['content'] с помощью метода __get(). Конечно, если вы определите публичное свойство $content, $Blog_Post->content вернет значение NULL вместо использования данных БД.

Нет причин для определения полей модели в качестве свойств. Если вам нужны подсказки IDE, просто используйте PHPDOC.

0 голосов
/ 17 ноября 2011

В фирме, в которой я работаю, мы очень недавно искали обновление до 3.2.Однако в нашей оценке я не припоминаю разницы в методах обработки ORM.Ваш выше выглядит так, как будто это должно быть примерно так:

  $Blog_Post = ORM::factory('blogpost')->where('id', '=', 1)->find();

  $content = $Blog_Post->content;

Предположим, что ваша таблица называется blogposts, конечно.Я могу ошибаться, и если да, можете ли вы сослаться на документацию, которая показывает этот тип взаимодействия модели?

...