2013-08-20 2 views
0

많은 Kohana ORM 관계가? 나는 Model_User_Image 클래스에 const MAX = 3를 선언함으로써 한계를 설정하는 생각을하고 images의 현재 숫자에 대해 확인하려면이 값을 사용했다. 관계 또는 규칙을 통해 제한하는 방법이 있습니까?제한하는 나는 다음과 같은 관계가 두 가지 모델이

(1) 부모의 ID에 영향을 미치는 당신의 Model_User_Image에 유효성 검사 규칙을 추가

+0

나는 존재하지 않는다고 생각합니다. 귀하의 솔루션은 나에게 잘 보입니다. 또는 ORM 모델을 확장하고 관계 정의에서 '최대'매개 변수를 읽는 자신의'add' 함수를 생성하십시오. – AmazingDreams

답변

1

이 문제는 실제로 다음과 같은 Kohana의 rules - 시스템을 사용하여 해결할 수 있습니다. 당신은 지정된 방법 max_no_images으로 Model_User를 사용할 수 있습니다.

public function rules() 
{ 
    return array(
     'user_id' => array(
      array(array('Model_User', 'max_no_images')),//automatically use value of the field as parameter 
     ), 
    ); 
} 

2 두 가지 방법으로 Model_User을 변경하십시오. 우선 허용되는 최대 이미지 수를 결정하기 위해 상수 또는 다른 종류의 변수가 필요합니다. 다음으로 이미지의 최대 수는 이미 (그렇다면, false를 반환)에 도달 할 경우 확인하는 max_no_images을 정의해야합니다. ORM을 통해 쉽게 수행 할 수 있지만 쿼리를 직접 사용하면 더 빠를 수 있습니다. 여기에 게시 코드가 테스트되지는 않지만

public static function max_no_images($user_id) 
{ 
    $number_of_children = ORM::factory('User', $user_id)->children->count_all(); 
    return ($number_of_children < Model_User::max_children); 
} 

, 나는 약간 다른 변화에 그렇게했다, 그래서이 방법은 정말 작동합니다. 그들이 a specified function from the same model for validation in the documentation


를 기는 SQL 규칙을 사용하고이 문제를 접근 할 수있는 또 다른 방법 사용 방법을 확인하십시오. 내가 훨씬 더 말할 않을거야, 당신은 이미지의 수에 대한 검사를 할 필요가 삽입 할 때/생각에서이 ORM 접근 방식으로 완전히 동일하므로, 이미지의 항목을 업데이트.