Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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_Php_Sql_Laravel - Fatal编程技术网

Php 如何将此查询转换为laravel

Php 如何将此查询转换为laravel,php,sql,laravel,Php,Sql,Laravel,我在将此子查询转换为laravel时遇到了麻烦。有人能帮我转换这个长查询吗 SELECT rescue_units.id as 'rescue_units_id', name, address, lat, lng, email, type, status, ( 6371 * acos( cos( radians(10.3099568) ) * cos( radians( lat ) ) * cos( rad

我在将此子查询转换为laravel时遇到了麻烦。有人能帮我转换这个长查询吗

SELECT 
    rescue_units.id as 'rescue_units_id', 
    name, 
    address, 
    lat, 
    lng, 
    email, 
    type, 
    status, 
    ( 6371 * acos( cos( radians(10.3099568) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(123.8934193) ) + sin( radians(10.3099568) ) * sin( radians( lat ) ) ) ) AS distance
FROM rescue_units 
WHERE rescue_units.id = ANY (
    SELECT ru_id 
    FROM ru_ec 
    WHERE ec_id = (
        SELECT id 
        FROM emergency_codes 
        WHERE ID = 6
    )
) 
AND 
status = 1 
order by distance
编辑: 这就是我迄今为止所尝试的

$markersByRadius = RescueUnit::select(
               DB::raw("rescue_units.id as 'rescue_units_id', name, address, lat, lng, email, type, status,
                    ( 6371 * acos( cos( radians(?) ) *  cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians(?) ) * sin( radians( lat ) ) ) ) AS distance
                    FROM rescue_units WHERE rescue_units.id = ANY (SELECT ru_id FROM ru_ec WHERE ec_id = (SELECT id FROM emergency_codes WHERE ID = ?)) AND status = 1 order by distance"))
               ->take($limit)
               ->setBindings([$lat, $lng, $lat, $ec_id])
               ->get();

        return $markersByRadius;
这就是错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE rescue_units.id = ANY (SELECT ru_id FROM ru_ec WHERE ec_id = (SELECT id FR' at line 3 (SQL: select rescue_units.id as 'rescue_units_id', name, address, lat, lng, email, type, status, ( 6371 * acos( cos( radians(10.3099568) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(123.8934193) ) + sin( radians(10.3099568) ) * sin( radians( lat ) ) ) ) AS distance WHERE rescue_units.id = ANY (SELECT ru_id FROM ru_ec WHERE ec_id = (SELECT id FROM emergency_codes WHERE ID = 6)) AND status = 1 from `rescue_units` order by `distance` asc limit 3)

请检查这个还没有测试,但它应该工作。 你们唯一做错的部分是


请发布您到目前为止尝试过的内容。@JoelHinz在这里请检查编辑…什么不起作用,有什么错误?@MHakvoort再次检查编辑
   $markersByRadius = RescueUnit::select(
               DB::raw("rescue_units.id as 'rescue_units_id', name, address, lat, lng, email, type, status,
                    ( 6371 * acos( cos( radians(?) ) *  cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians(?) ) * sin( radians( lat ) ) ) ) AS distance"))
                    ->where('rescue_units.id', function($query)
                            {
                                $query->select(DB::raw('ru_id'))
                                      ->from('ru_ec')
                                      ->where('ru_ec.ec_id', function($query)
                            {
                                $query->select(DB::raw('id'))
                                      ->from('emergency_codes')
                                      ->where('ID = ?')
                                      ->where('status','1')
                                      ->orderBy('distance', 'ASC');
                            }));
                            })

               ->take($limit)
               ->setBindings([$lat, $lng, $lat, $ec_id])
               ->get();