【发布时间】:2017-12-09 01:22:15
【问题描述】:
我在使用 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 模型。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
你是否尝试过 print_r($locale) 并检查它是否有任何价值
-
->toSql() 不会返回变量绑定
-
@SR_ 谢谢@
-
@Exprator $locale 不为空,正如我已经提到的,甚至 ->where('locale', 'en') 不返回任何结果。如果我在 mysql 中尝试 sql,它会给我所需的列表,但不是 Laravel 中的查询
标签: sql laravel eloquent laravel-5.3 where-clause