Doktrin - Ben gerçek SQL (değil DQL) kullanabilir miyim -> andwhere (?)

2 Cevap php

Ben Doktrini, bir PHP ORM kullanıyorum. Ben bir Doktrin sorgu oluşturduk, ve ben daha fazla denetime gerek. Peki ben nerede hükümler yeni eklemek için ->andWhere(...) yöntemlerini kullanmaya başladım. Ancak ben başka bir tabloya dayalı bir alt sorgu yapmak gerekir, gibi pek:

$query->andWhere("id in (SELECT id from other_table where value = ?)", $myvar);

Yukarıdaki çalışmıyor. Ancak hiçbir Doktrin sınıf other_table için, ve doktrin dosyayı yüklemeye çalışırken tutar other_file.php. Ben (değil mi?) DQL olarak bu yorumlama olduğunu anladım. Ben sadece ham SQL kullanın böylece someway ben, DQL olarak yorumlamak değil Doktrini söyleyebilir var mı?

Ben Doctrine_RawSql kullanabilirsiniz biliyorum, ama bu sorgunun tüm yeniden içerecektir. Yolgeçen hanı olsaydı güzel olurdu.

2 Cevap

Ne yazık ki Doktrin 1.x ile bu RawSql kullanırken bile, bunu yapmak mümkün değildir.

Tüm RawSql sorgular seçilen her tablo gerçekten bir Doctrine_Record sınıf bir 'Bileşen' eşlenmiş gerektirir.

Sen daha iyi aptalca basit ve başka bir yerde hiç kullanılmamış olsa bile, diğer tablo için bir sınıf ekleyerek servis olabilir.

Aksi takdirde, kullandığınız ham PDO düşmesi gerekir:

$dbh = Doctrine_Manager::connection()->getDbh();

Bkz Doctrine_RawSql

Hatta bu tür bir şey yapmak mümkün olma durumunda (i.e. usings DB tables that are not mapped to a Doctrine class, and using pure-raw-SQL), ben Doktrin 1.x ile mümkün olduğunu sanmıyorum

Yakında ^ ^ değil, bu yıl sonu için ... duyurulur - Belki Doktrini 2.0 ile