Php 或使用Laravel语法和原始查询的where to或where

Php 或使用Laravel语法和原始查询的where to或where,php,sql,laravel,laravel-5,query-builder,Php,Sql,Laravel,Laravel 5,Query Builder,获取这样的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)

获取这样的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换成ORs。我想我可能拥有它

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 (?, ?))
为什么是
呢?为什么不是真正的数据,或者这不是
toSql
的工作方式

--更新--

下面是我使用的代码
toSql

$sql = $postcode_extract->toSql();

print_r($sql);

我是在foreach循环

Laravel使用准备好的语句后执行此操作的,因此要获取sql查询和参数,您不仅需要使用
toSql()
方法,还需要使用
getBindings()
,以便获取完整查询,例如:

$sql = str_replace(['%', '?'], ['%%', "'%s'"], $postcode_extract->toSql());
$fullSql = vsprintf($sql, $postcode_extract->getBindings());