2011-11-17 2 views
1

Je construis requête dans le cadre de kohana qui ressemble à ceci:Kohana générateur de requêtes

DB::select('users.email')->from('users', 'roles_users')-> 
where('users.id', '=', 'roles_users.user_id')-> 
and_where('roles_users.role_id', '=', '2'); 

il génèrerait:

SELECT `users`.`email` FROM `users`, `roles_users` 
WHERE `users`.`id` = 'roles_users.user_id' 
AND `roles_users`.`role_id` = '2' 

donc mon problème est que kohana met ' ' pour moi sur roles_users.user_id si mysql recherche le texte non pour la valeur réelle du champ. est-il possible de le résoudre?

Répondre

3

Y a-t-il une raison pour laquelle vous ne rejoignez pas l'autre table? Comme ça:

DB::select('users.email') 
->from('users') 
->join('roles_users', 'LEFT') 
->on('users.id', '=', 'roles_users.user_id') 
->where('roles_users.role_id', '=', '2'); 

Si vous ne l'aimez pas, essayez

DB::select('users.email') 
->from('users', 'roles_users') 
->where('users.id', '=', DB::expr('roles_users.user_id')) 
->and_where('roles_users.role_id', '=', '2'); 
+0

Évidemment, le premier extrait est la solution. Mais je me demande, s'il est possible de faire en utilisant un second extrait. il n'y aura pas de jointure, alors comment db va-t-il comprendre 'where ('users.id', '=', DB :: expr ('roles_users.user_id'))'? – Kowser

+2

DB :: expr ('blablabla') signifie que 'blablabla' n'est pas échappé par le constructeur de requête. – egis

+0

merci ça a parfaitement fonctionné – Linas

2

Avez-vous essayé avec DB::expr()?

Questions connexes