Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Mysql 在Laravel查询生成器中使用`AND`,语法错误(orOn)_Mysql_Laravel_Laravel Query Builder - Fatal编程技术网

Mysql 在Laravel查询生成器中使用`AND`,语法错误(orOn)

Mysql 在Laravel查询生成器中使用`AND`,语法错误(orOn),mysql,laravel,laravel-query-builder,Mysql,Laravel,Laravel Query Builder,我有一个sql(MariaDB)查询,它工作正常: SELECT admin_combustibles.nombre, admin_combustibles.id_combustible, admin_combustible_unidades.nombre AS unidades, admin_tipo_combustibles.nombre AS tipo_combustible, admin_indice_combustibles.valor_comb

我有一个sql(MariaDB)查询,它工作正常:

SELECT
    admin_combustibles.nombre,
    admin_combustibles.id_combustible,
    admin_combustible_unidades.nombre AS unidades,
    admin_tipo_combustibles.nombre AS tipo_combustible,
    admin_indice_combustibles.valor_combustible
FROM
    admin_combustibles
INNER JOIN admin_combustible_unidades ON admin_combustibles.combustible_unidades_id = admin_combustible_unidades.id_combustible_unidad
INNER JOIN admin_tipo_combustibles ON admin_combustibles.tipo_combustible_id = admin_tipo_combustibles.id_tipo_combustible
LEFT  JOIN admin_indice_combustibles ON admin_combustibles.id_combustible = admin_indice_combustibles.combustible_id
AND admin_indice_combustibles.anio = 1992
AND admin_indice_combustibles.mes = 6
ORDER BY
    admin_combustibles.nombre
但是当我试图通过Laravel时,我有一些错误,因为Laravel在数字1992上加了一些
,这样查询就不起作用了

另外,我不知道如何在Laravel上执行
,我只有
但它不起作用:

$datos = AdminCombustible::select([
    'admin_combustibles.nombre',
    'admin_combustibles.id_combustible',
    'admin_combustible_unidades.nombre AS unidades',
    'admin_tipo_combustibles.nombre AS tipo_combustible',
    'admin_indice_combustibles.valor_combustible'])
    ->join('admin_combustible_unidades', 'admin_combustibles.combustible_unidades_id', '=', 'admin_combustible_unidades.id_combustible_unidad')
    ->join('admin_tipo_combustibles', 'admin_combustibles.tipo_combustible_id', '=', 'admin_tipo_combustibles.id_tipo_combustible')

    ->leftJoin('admin_indice_combustibles', function ($join) {
        $join->on('admin_indice_combustibles.combustible_id', '=', 'admin_combustibles.id_combustible')->orOn('admin_indice_combustibles.anio', '=', 1992);
    })
    ->get();
    dd($datos);
我有一个sql语法错误


关于如何使用Laravel的查询生成器进行查询,有什么帮助吗?(我将整个查询设置为DB::raw,它可以工作,但我不想使用raw())

我认为这里可能有两个问题。由于您在原始查询中使用了
,您可能需要在加入时使用
而不是

也需要在参数上使用<代码> d::RAW()/代码>,否则Laravel会考虑它们列…

$join->on('admin_indice_combustibles.combustible_id', '=', 'admin_combustibles.id_combustible')->on('admin_indice_combustibles.anio', '=', DB::raw('1992'));
这可能会有所帮助-