2012-12-28 4 views
0

저는 Yii 프레임 워크에 새로운 기능이며 질문이 있습니다.Yii의 활성 레코드의 모델 파일에 새 속성을 추가하십시오.

나는이 필드가 '노드'라는 이름의 테이블이 있습니다

  • ID
  • 이름
  • 이 PARENT_ID

PARENT_ID이 존재 노드의 부모의 ID를 포함 테이블도.

Gii 인터페이스를 사용하여 모델, 컨트롤러 및보기 파일을 만들었습니다. 보기 파일에서 부모의 ID가 표시되었지만 ID 대신 상위 이름을 표시하려고합니다.

아마도이 테이블의 모델 클래스에 공용 속성을 추가해야 할 것 같아서 뷰 파일의 -> parent_name을 통해 액세스 할 수 있습니다.

어떻게하면됩니까? 어떤 파일을 변경해야합니까?

답변

1

부모 노드와 관련이 있어야합니다.

그래서 노드 :: 관계 기능, 당신은 같은 것을해야한다 : 당신의 아이에서이 값을 얻으려면

'parent' => array(self::BELONGS_TO, 'Node', 'parent_id'), 

을, 당신은 (당신의 아이 노드 변수가 $ childNode에 이름 가정) 수행 할 수 있습니다

$childNode->parent_name; 

echo $childNode->parent->name; 

당신이 정말로 수행 할 수 있으려면 ...

... 어떤 이유로, 이처럼 노드 모델의 속성을 만들 수 있습니다

이제
public function getParent_name() 
{ 
    if ($this->parent == null) 
     return ''; 

    return $this->parent->name; 
} 

당신이 호출 할 수 있습니다 ...

$childNode->parent_name; 

또는

$childName->getParent_name(); 

는 부모 노드의 이름을 얻을 수 있습니다.

1

당신은 parent 테이블과의 관계에 대해 부모가 있어야 같은 :

'parent' => array(self::BELONGS_TO, 'Parent', 'parent_id) 

또는

'parent' => array(self::BELONGS_TO, 'Node', 'parent_id'), 

가 같은 테이블과 관련 있다면

. 그러면 다음과 같이 상위 이름에 액세스 할 수 있습니다.

echo CHtml::value($node, 'parent.name'); 
+0

부모 테이블이 없습니다. 부모 노드 테이블에 있습니다. –

관련 문제