2015-01-05 4 views
0

모델 속성에서 관계 클래스 이름으로 되돌릴 방법을 찾으려면 Yii 2.0의 모든 API 문서를 살펴 보았습니다. Yii2 : 관계 속성에서 클래스 이름 얻기

은 우리가 그 클래스 고객이 관계를 $this->hasOne(Country::className(), ['id' => 'countryId']);

을 가지고 있으며, 컨트롤러 함수에서 매개 변수는 속성 "countryId은"이었다 가정하자. 관련 모델의 클래스 이름을 검색하는 방법은 무엇입니까?

+0

'국가 :: className()'과'self :: className()'(고객)이 맞습니까? – deacs

+0

@deacs'self :: ClassName()'은 Customer 클래스 이름을 반환 할 것이지만, 필요하다면 관계에 정의 된 'countryId' 속성에 기반한 국가 클래스 이름을 얻는 것입니다. – AMILO

+0

당신은 클래스 이름을 얻고 싶습니까? 관계가 될 수있는 ANY 속성으로부터의 관계? 'countryId' 또는'userId' 또는'customerId'와 같은 것 – deacs

답변

0

변수의 끝에서 ID를 제거하고 클래스의 이름을 구하여 대문자로 만듭니다. 그러나 이것이 정상적인 개발 관행이 될 수있는 상황을 묘사 할 수는 없습니다. 모델에 대해이 변환을 수행하려면 am 배열을 정의 할 수도 있습니다.

http://php.net/manual/en/intro.reflection.php을 사용하여 모든 함수의 이름을 얻고 필드 이름을 기반으로 관계/모델의 이름을 추측 해 볼 수 있습니다. 클래스와 관계 필드의 이름을 적절한 이름으로 지정하면 모델을 다시 추측 할 수 있어야합니다.

여전히 해킹과 같은 느낌이 들지만, 필드를 기반으로하는 모델의 이름을 반환하는 함수를 만드는 것이 가장 쉬운 방법입니다. 당신이 게으르려고 노력하는 것을 알고 있지만 이것은 프로그래밍의 해킹 방법입니다.

+0

입니다. @ mihai-p에게 감사드립니다.하지만이 제안은 내 목표를 달성하지 못할 것입니다. 런타임에 관계 모델을 식별하고 ajax를 통해 처리 할 관계 모델 클래스를 기반으로보기 작성 모달을 생성하는 것입니다. – AMILO

+0

나는 1 개의 더 많은 옵션을 넣었지만 나는 여전히 그렇게하지 않을 것이다. –