【问题标题】:Kohana query builderKohana 查询生成器
【发布时间】:2011-11-17 22:43:49
【问题描述】:

我正在 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 搜索文本而不是字段的实际值。有什么办法解决吗?

【问题讨论】:

    标签: php kohana kohana-3 kohana-db kohana-3.0


    【解决方案1】:

    您没有加入另一张桌子有什么原因吗?像这样:

    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');
    

    【讨论】:

    • 显然首先 sn-p 是解决方案。但我想知道,是否可以使用第二个 sn-p。不会有任何join,那么db如何理解where('users.id', '=', DB::expr('roles_users.user_id'))
    • DB::expr('blablabla') 表示 'blablabla' 不会被查询生成器转义。
    【解决方案2】:

    你试过DB::expr()吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      相关资源
      最近更新 更多