2011-11-17 143 views
1

我建立在Kohana的框架查詢,看起來像這樣:的Kohana查詢生成器

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

它會輸出:

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

所以我的問題是Kohana中提出' '我對roles_users.user_id因此MySQL搜索文本而不是該字段的實際值。有什麼方法可以解決它?

回答

3

有沒有你不加入其他桌的原因是什麼?這樣的:

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

如果你不喜歡,嘗試

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

很明顯,第一個片段就是解決方案。但我想知道,是否可以使用第二個片段。不會有任何連接,所以db如何理解'where('users.id','=',DB :: expr('roles_users.user_id'))'? – Kowser

+2

DB :: expr('blablabla')表示'blablabla'未被查詢構建器轉義。 – egis

+0

謝謝你完美的工作 – Linas

2

您是否嘗試過與DB::expr()