2009-08-14 8 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) 

、次いで、このようなobjective_view.sql内部データ/ SQLを/置きます

このようにすれば、目的のテーブルに更新されたデータが取り込まれ、関連する情報を簡単に取得するためにクエリを実行できます。

+0

私はその質問がずっと前に静かに投稿されていたのを見ることができます!どうやってそれに対処しましたか?または教義の意見に対処する他のより良い方法を見つけましたか? – med

+0

'objective_view.sql'はどのように実行されますか? 'insert-sql'タスクはそれをしないようです... –

+0

@PeterTaylor:' symfony doctrine:build --all --and-load'を実行すると、data/sql /内のすべてのsqlスクリプトが実行されます。フォルダ... – med