2011-11-17 3 views
0

Kohana 3.2와 협력 중이며 컨트롤러에 다음 코드가 있습니다.Kohana 3.2 ORM 모델 정보가 포함되어 있지 않습니다

$Blog_Post = new Model_Blogpost(); 

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

    $content = $Blog_Post->content; 

나는 현재 ID의 1, 2, 내 DB에서 3 개 기록, 3

$ Blog_Post-> 내용, 또는 기타 필드는 null가 있습니다. 왜 그런지 모르겠습니다.

답변

2
  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 지난 DB 쿼리를 볼 수 있습니다. 의견에서. 이 수정으로는 모델이 작동하지 않습니다. $_object 속성에 저장된 ORM 데이터 및 $Blog_Post->content은 에 대한 __get() 방법의 바로 가기입니다. 물론 public $content 속성을 정의하면 $Blog_Post->content은 DB 데이터를 사용하는 대신 NULL 값을 반환합니다.

모델 필드를 속성으로 정의 할 이유가 없습니다. IDE 힌트가 필요하면 PHPDOC 만 사용하십시오.

+0

이것은 매우 이상하다, 나는 과거에 공장을 사용했지만 그 중 하나도 효과가 없었다. "new Model_Blogpost ($ id)"를 사용하여 객체 아직로드 된 것은 아니지만 아직 $ Blog_Post-> content에 대해 null이 반환되었습니다. 객체를 자세히 보면 _object에 모델 정보 http://d.pr/fY99가 포함되어 있지만 실제 필드는 – Onema

+1

모델에 잘못된 수정이있는 것 같습니다. 예를 들어 pastebin.com과 같은 어딘가에 붙여 넣을 수 있습니까? – biakaveron

+0

맞습니다! 문제는 모델을 정의하는 방법이었습니다. 내 모델 http://d.pr/Xp5B에서 각 테이블 필드를 다시 선언했습니다. 테스트/프레임 워크를 배울 때 나는 다른 일을 해왔습니다. 모델이 더 간단할까요? 대답을 편집하면 올바른 것으로 표시해 드리겠습니다. 도움을 주셔서 감사합니다. – Onema

0

내가 일하는 회사에서 우리는 매우 최근에 3.2로 업그레이드하려고했습니다. 그러나 우리의 평가에서 나는 ORM 처리 방법의 차이점을 생각해 내지 못했다.

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

    $content = $Blog_Post->content; 

테이블을 가정하면라고 블로그 게시물, 물론 : 그것은이 같은해야처럼 너의 위 보인다. 나는 그것에 대해 틀릴 수도 있으며, 만약 내가 그렇다면, 이런 종류의 모델 상호 작용을 보여주는 문서에 링크 할 수 있습니까?

+0

사실 팩토리는 새 모델을 반환하므로 캐스케이드 메서드 호출을 할 수 있습니다. 내가 아는 한 코드 행과 코드 3 행은 동등합니다. 이제 당신은 좋은 지적을 제기합니다. 테이블의 이름을 말할 때. 내 테이블은 blogpost가 아니라 blog_post라고합니다. 내 모델에 변수가 있지만 "protected $ _table_name = 'blog_post';" 어떤 모델을 사용하고 있는지 모델에 알려줘야합니다. 나는 같은 장소에 있다고 생각한다 : ( – Onema

관련 문제