I have a database schema like this: My database schema: http://i.stack.imgur.com/vFKRk.png
Bağlamını açıklamak için: Bir kullanıcı bir mesaj yazar. O, bir veya daha fazla kullanıcı için gönderebilirsiniz.
Ben bir kullanıcı için mesajın, yazarın unvanı almak başardı. Ancak ben bu proje için kullanmak Doktrini, 2 sorguları ile bunu. Bu benim için biraz garip ve ben, neden anlamak için arıyorum. Normalde, biz bir SQL sorgusu ile yapabilirsiniz.
Benim DQL sorgu:
$q = Doctrine_Query::create()->select('id_me, users_id_us, state_me, type_me, mc.title_mc, us.login_us') ->from('messages m')->innerJoin('m.messages_content mc')->innerJoin('mc.Users us') ->where('users_id_us = ?', $user)->limit($opt['limit'])->offset($opt['offset'])->orderBy($opt['order']);return $q->fetchArray();
Doktrin tarafından döndürülen SQL sorguları:
SELECT DISTINCT m3.id_me FROM messages m3 INNER JOIN messages_content m4 ON m3.messages_content_id_mc = m4.id_mc INNER JOIN users u2 ON m4.users_id_us = u2.id_us WHERE m3.users_id_us = '6' ORDER BY m3.id_me DESC LIMIT 2
SELECT m.id_me AS m__id_me, m.users_id_us AS m__users_id_us, m.state_me AS m__state_me, m.type_me AS m__type_me, m2.id_mc AS m2__id_mc, m2.title_mc AS m2__title_mc, u.id_us AS u__id_us, u.login_us AS u__login_us FROM messages m INNER JOIN messages_content m2 ON m.messages_content_id_mc = m2.id_mc INNER JOIN users u ON m2.users_id_us = u.id_us WHERE m.id_me IN ('11') AND (m.users_id_us = '6') ORDER BY m.id_me DESC
Neden Doktrin sorgu böyle sorgu dönmez:
SELECT m.id_me, m.users_id_us, m.state_me, m.type_me, mc.title_mc, u.login_us FROM messages m JOIN messages_content mc ON mc.id_mc = m.messages_content_id_mc JOIN users u ON u.id_us = mc.users_id_us WHERE m.users_id_us = 6;
Herhangi bir fikir benim DQL sorgu dönüştürmek ve bunu bir kez çalıştırmak?