2009-08-14 46 views
2

我在教義中遇到了處理視圖的問題。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 2010-02-28 13:16:29

2

一種不同的解決方案,可以創建用於配置/教義內的視圖的模式/像這樣:

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) 

,然後把一個objective_view.sql數據/ SQL內部/像這樣:

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; 

通過這種方式,客觀表將填充更新的數據,您可以對其執行查詢以輕鬆獲取相關信息。

+0

我可以看到這個問題很久以前就已經發布了!你是怎麼處理的?或者你有沒有找到其他更好的方法來處理學說觀點? – med 2010-11-23 14:48:09

+0

'objective_view.sql'如何執行? insert-sql任務似乎沒有這樣做... – 2011-12-14 12:26:01

+0

@PeterTaylor:如果你做'symfony教條:build -all-and-load'它會執行所有的sql腳本在data/sql /夾... – med 2011-12-18 10:53:59