2013-04-17 1 views
0

나는 sort_order라는 컬럼이있는 상대 테이블을 가지고 있습니다. 연결된 테이블에서 값을 검색 할 때 ID 대신이 열을 기준으로 정렬하도록합니다.symfony 1.4에서 정렬 순서로 상대 테이블 데이터 검색

indexSuccess :

<?php foreach ($videos as $video): ?> 
    <?php $videoAssets = $video->getVideoHubAssets(); ?> 
... 

내가

<?php $videoAssets = $video->getVideoHubAssets()->orderBy("sort_order ASC"); ?> 

처럼 뭔가를 원하지만이 올바르지 않습니다. 나는이 행동을 먼저해야만 하는가?

행동

$this->videos = Doctrine::getTable('videosHub')->getAllVideos(); 

tableClass

public function getAllVideos(){ 
    return $this->createQuery()->setPublishStatus()->orderBy('featured DESC, title')->execute(); 
    } 

액션 쿼리 자산 테이블에 관계가있는 별도의 테이블에서 당기고 있습니다. 이 작업을 수행하는 올바른 방법은 무엇입니까?

답변

3

비디오 클래스에 대한 새 메서드를 만들 수 있습니다.

예를 들어

:

indexSuccess :

<?php foreach ($videos as $video): ?> 
    <?php $videoAssets = $video->getOrderedVideoHubAssets(); ?> 
... 

클래스를 가지고

public function getOrderedVideoHubAssets(){ 
    return Doctrine_Core::getTable('VideoHubAsset')->createQuery('a') 
      ->leftJoin('a.Video v') 
      ->where('a.video_id = ?', $this->getId()) 
      ->orderBy('a.sort_order ASC') 
      ->execute(); 
} 
+0

하지만, 테이블 관계를 만들기의 장점에 대한 질문을 제기한다. ID별로 관련 레코드를 가져 오기 위해 별도의 쿼리를 호출해야하는 경우 정렬을 수행하면 처음에는 관계를 만드는 것이 실제 이익입니까? 그들이 외래 키에 묶여 있지 않더라도 똑같은 일을 여전히 할 수 있습니다. –

+0

이것은 내가 사용하는 방법이지만 가장 최적화되지 않았을 수 있습니다. 아마도 "첫 번째"관계 (schema.yml에 정의 됨)를 사용하여 더 간단하고 최적화 된 방법이있을 수 있습니다. 누군가에게 다른 해결책이 있다면 알려주십시오! – ByUsKev

관련 문제