Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel查询生成器返回空,其中直接SQL返回结果_Php_Mysql_Sql_Laravel_Eloquent - Fatal编程技术网

Php Laravel查询生成器返回空,其中直接SQL返回结果

Php Laravel查询生成器返回空,其中直接SQL返回结果,php,mysql,sql,laravel,eloquent,Php,Mysql,Sql,Laravel,Eloquent,我试图解决一个问题,即使用Laravel的查询生成器无法获得任何结果,但当我使用PHPMyAdmin从getQueryLog运行相同的查询时,我会得到预期的结果 我的查询生成器: DB::table('likes') ->join('geoip_blocks', function($join) { $join->where("ip", ">=", "block_start")

我试图解决一个问题,即使用Laravel的查询生成器无法获得任何结果,但当我使用PHPMyAdmin从getQueryLog运行相同的查询时,我会得到预期的结果

我的查询生成器:

DB::table('likes')
            ->join('geoip_blocks', function($join)
            {
                $join->where("ip", ">=", "block_start")
                    ->where("ip", "<=", "block_end");
            })
            ->join('geoip_locations', "geoip_locations.id", "=", "location_id")
            ->select(array("country", DB::raw("count(*) as {$this->aggregate}")))
            ->groupBy('country')->get();
DB::table('likes')
->join('geoip_blocks',函数($join)
{
$join->where(“ip”、“>=”、“块启动”)
->其中(“ip”,“聚合}”))
->groupBy('country')->get();
querylog的输出:

array (size=3)
  'query' => string 'select `country`, count(*) as count from `likes` inner join `geoip_blocks` on `ip` >= ? and `ip` <= ? inner join `geoip_locations` on `geoip_locations`.`id` = `location_id` group by `country`' (length=196)
  'bindings' => 
    array (size=2)
      0 => string 'block_start' (length=11)
      1 => string 'block_end' (length=9)
  'time' => float 2.69
数组(大小=3)

'query'=>string'选择'country',count(*)作为'likes'内部连接'geoip_blocks'在'ip`>='上的计数?好的,我想起来了。我将
$join->where
切换到
$join->on
,现在一切正常。从表面上看,这似乎是为了生成相同的查询,但我猜幕后还发生了其他事情。

你到底为什么不使用雄辩???与雄辩相同的交易。我尝试使用查询生成器,因为雄辩不起作用!好的,如果其他所有操作都失败,您总是可以使用带绑定参数的好的旧PDO。是的,
JoinClause
类上的
where
假定用于固定值,而
on
则用于其他列。您的第一次尝试将
block\u start
block\u end
视为字符串,而不是要比较的列。
select `country`, count(*) as count from `likes` inner join `geoip_blocks` on `ip` >= block_start and `ip` <= block_end inner join `geoip_locations` on `geoip_locations`.`id` = `location_id` group by `country`