2010-07-20 4 views
0

테이블의 모델을 가지고 있으며 테이블과 대조적으로 모델을 사용하여 조인을하고 싶습니다. , 대신 예를 들면 : 나는 내 모델을 사용할 수 없습니다, 테이블 이름과 I 가입 할 열을 지정Zend Join Models

$select = $this->select() 
->from(array('p' => 'products'), 
    array('product_id', 'product_name')) 
->join(array('l' => 'line_items'), 
    'p.product_id = l.product_id', 
->limit(20, 10); 

?

$select = $this->select() 
->from(array('p' => 'products'), 
    array('product_id', 'product_name')) 
->join(array('l' => Model_Table1::tableName()), 
    'p.product_id = l.product_id', 
->limit(20, 10); 
+0

나는 다른 모델의 인스턴스를 만들고 필요에 따라 행을 가져옵니다. –

답변

1

내가 표시되지 않습니다에 왜 안, 모델이 변수 반환 이름과 정적 기능을 가진 정적 변수가있는 경우 :

protected static $table = 'dbname'; 
public static function tableName() { 
    return self::$table; 
} 

는 비록 가치가 있습니까? 테이블 이름이 변경 될 것입니까?

+0

문제의 모델이 두 번째 테이블을 제어하고 있습니다 (여섯 번째 정규 양식을 유지하기 위해). 단 하나의 테이블을 포함하는 것은 옵션이 아니며 필요한 조인은 복잡합니다. –

2

아니요 유 .. 그래서 U 만 제어기 이러한 클래스를 사용하거나 다른 모델 역시 포함 할 수있다 .. 다음을 포함 할 수있다 .. 두 클래스 모델에 참여있어서 두지 응용 프로그램이나 요구 사항

0

무결성 검사를 false로 설정해야합니다. Like

$select = $this->select() 
->setIntegrityCheck(false) 
->from(array('p' => 'products'), 
    array('product_id', 'product_name')) 
->join(array('l' => 'line_items'), 
    'p.product_id = l.product_id', 
->limit(20, 10); 
관련 문제