【发布时间】:2015-06-23 05:22:12
【问题描述】:
要得到这样的 SQL 语句;
SELECT postcode FROM Payment WHERE
countries IN ('E92000001', 'L93000001') AND
counties IN ('95', 'E10000002') AND
gors in ('A', 'B');
我的代码目前是;
$postcode_extract = PostcodeExtract::all();
foreach ($input as $column => $values) {
$postcode_extract->whereIn($column, $values);
}
我需要将这些 AND 转换为 OR。我认为我可能拥有它;
foreach ($input as $column => $values) {
$postcode_extract->orWhere(function ($query) use ($column, $values) {
$query->whereIn($column, $values);
});
}
我确实得到了结果。但如果没有看到原始查询,就很难判断。我用了toSql(),结果是这样的;
select * from `201502_postcode` where (`country` in (?, ?)) or (`county` in (?, ?)) or (`gor` in (?, ?))
为什么是?s?为什么不是真实数据,或者toSql 不是这样工作的?
-- 更新--
这是我使用toSql的代码;
$sql = $postcode_extract->toSql();
print_r($sql);
我在foreach循环之后做
【问题讨论】:
标签: php sql laravel laravel-5 query-builder