如何修复Laravel中的WHERE子句

时间:2017-07-05 11:34:21

标签: sql laravel eloquent laravel-5.3 where-clause

使用WHERE子句时,Laravel Eloquent存在问题。

代码

<?php

$locale = Session::get('locale');

$categories = Category::whereHas('translations', function ($query) use ($locale) {
    $query->where('locale', $locale);
})->get();

生成SQL

select * from `categories` 
    where exists (select * from `category_translations`
        where `category_translations`.`category_id` = `categories`.`id` 
        and **`locale` = ?**)

它没有注册locale的给定值。

如果我放->where('locale', 'en'),即使我尝试使用原始查询而不是使用Eloquent模型,我也会遇到同样的问题。

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

像注释中的SR_一样,toSql()函数不会返回变量绑定。如果您想了解真实查询的外观,可以安装Laravel Debugar等工具:https://github.com/barryvdh/laravel-debugbar