2012-02-06 2 views
0

TL; DR - Yii에서 개인 필드를 대량으로 할당하려면 어떻게해야합니까?Yii - 개인 필드의 대규모 할당

StackOverflow의 Yii 전문가는 무엇입니까? YiiFramework forums는 정말로 나를 도와주지 않았다.

다른 jobCount에 종속 된 CActiveRecord 모델에 개인 필드 hired이 있습니다. 기본적으로, 해당 구성원과 관련된 유효한 job (다른 테이블에 저장되어 있음)이 하나 이상 있으면 고용 된 것으로 간주됩니다.

종래에는 afterFind 메서드에서 hired을 설정했지만 매번 관계를로드한다는 의미입니다. 데이터베이스 쿼리를 저장하기 위해 hired이 필요한 경우에만 관계를로드하고 싶습니다. 따라서 hired을 private으로 설정하고 관계를로드하고 getHired()이 호출되면 설정할 수 있습니다. 내 CGridView에 hired 필드를 통합하면

지금까지 너무 좋아

...

문제가 발생합니다. 예 또는 아니요에 대한 간단한 드롭 다운 필터링을 사용하여 열 필터를 사용할 수있게하고 싶습니다. 필터를 작성하면 CGridView가 거대한 할당을 사용하여 삭제 된 모델로 설정하는 GET 요청을 다시 전달합니다.

$model->attributes = $_GET['ModelName']; 

분명히 나는 ​​개인 필드 임에도 불구하고 hired을 설정하려고합니다. (나는 CGridView에 대한 검색을 처리합니다. 걱정하지 마십시오.) 내 모델에서 안전한 필드를 만들었지 만 설정된 것은 아닙니다.

  • setHired() 기능은
  • 호출되지 않습니다
  • setAttribute() 기능은

이 작업을 수행하는 올바른 방법은 무엇입니까 불리는되지 않습니다

  • setAttributes() 함수를 호출되지 않습니다? 분명히, 난 그냥 ... 내 컨트롤러 액션에

    if (isset($_GET['ModelName']['hired'])) 
        $model->setHired($_GET['ModelName']['hired']); 
    

    을 추가 라인을 추가 할 수 있습니다 ...하지만 난 정말이 아니라 개인 필드가 대량으로 할당 할 수 있도록하는 방법을 배울 것입니다.

    나는 이것이 다소 복잡한 것을 알고 있습니다. 이 hired 비트를 간소화 할 수있는 방법이 있다면 그 점을 이해할 수있을 것입니다. 그래도이 일을 할 수있는 방법이 있는지 배우고 싶습니다.

  • 답변

    0

    속성 목록에 속성을 추가하면됩니다.

    public function attributeNames() 
    { 
        $names = parent::attributeNames(); 
        $names[] = 'hired'; 
        return $names; 
    }