2009-08-14 4 views
2

Doctrine의보기를 다루는 데 문제가 발생했습니다.Doctrine ORM에서의 조회

$q = Doctrine_Query::create() 
         ->select('c.id, c.name, m.id, m.name, m.status, 
            m.modified, m.entered, m.accountid') 
         ->from('Category c') 
         ->leftJoin('c.Mailing m'); 
$view = new Doctrine_View($q, 'view_mailings'); 
$q->execute(array(), Doctrine::HYDRATE_ARRAY); 

결과는 모든 레코드의 구성 :

나는 내 데이터베이스에서 다음 볼 수 있습니다. 그러나 나는 다른 값 에 따라 accountid에 대해 다른 값을 기반으로 서브 세트 을 가져와야합니다. 이것을 어떻게 할 수 있습니까?

도움 주셔서 감사합니다.

답변

1

작성한보기를 사용하지 않고 쿼리 $ q를 실행하고 있습니다.

+1

죄송합니다. 귀하의 답변에 많은 의미가 없습니다. 직선 쿼리를 사용하고 싶다면 데이터베이스에서 뷰를 작성하는 데 전혀 신경 쓰지 않아도됩니다. – veli

2

다른 솔루션은 구성/교리 내부의 뷰 스키마를 생성 수 /이 같은

DROP VIEW IF EXISTS objective; 
DROP TABLE IF EXISTS objective; 
CREATE VIEW objective AS 
    SELECT 
    c.id as id, 
    z.name as zone, 
    p.name as province, 
    c.name as city, 
    cs.amount as population, 
    co.id as city_obj_id, 
    co.clinic_num as clinic_number, 
    co.clinic_obj as clinic_obj, 
    co.comments as comments 

    FROM 
    city c left join city_objective co on co.city_id = c.id 
    left join city_census cs on (cs.city_id = c.id and cs.year = 2009) 
    left join province p on p.id = c.province_id 
    left join zone z on z.id = p.zone_id; 
:

objective: 
    tableName: objective 
    columns: 
    id: 
     type: integer 
    zone: 
     type: string(50) 
    province: 
     type: string(30) 
    city: 
     type: string(100) 
    population: 
     type: integer 
    city_obj_id: 
     type: integer 
    clinic_number: 
     type: integer 
    clinic_obj: 
     type: integer 
    comments: 
     type: string(255) 

하고 이렇게/데이터/SQL 내부 objective_view.sql 넣어

이렇게하면 목표 테이블에 업데이트 된 데이터가 채워지고 쿼리를 실행하여 관련 정보를 쉽게 얻을 수 있습니다.

+0

나는이 질문이 오래전에 조용하게 게시되었음을 알 수있다. 그걸 어떻게 다뤘 니? 또는 교리 관점을 다루는 다른 더 좋은 방법을 찾았습니까? – med

+0

'objective_view.sql'은 어떻게 실행됩니까? 'insert-sql' 태스크는 그것을하지 않는 것 같습니다 ... –

+0

@PeterTaylor :'symfony doctrine : build --all --and-load'를 실행하면 data/sql/안에있는 모든 SQL 스크립트를 실행합니다. 폴더... – med