Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/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
Php 将Sql查询转换为雄辩的Laravel 5.6_Php_Sql_Laravel_Eloquent - Fatal编程技术网

Php 将Sql查询转换为雄辩的Laravel 5.6

Php 将Sql查询转换为雄辩的Laravel 5.6,php,sql,laravel,eloquent,Php,Sql,Laravel,Eloquent,我需要将此SQL转换为Eloquent,因为我需要分页和检索集合,有人可以帮助我吗 'SELECT n.id_norma, n.id_tipo_norma, n.texto_norma, n.fec_norma,r.cod_nodo, r.articulo, t.desc_tipo_norma, n.desc_norma FROM normas n, rel_nodo_tem r, tipo_norma t WHERE r.id_norma = n.id_norma

我需要将此SQL转换为Eloquent,因为我需要分页和检索集合,有人可以帮助我吗

'SELECT n.id_norma, n.id_tipo_norma, n.texto_norma, n.fec_norma,r.cod_nodo, 
    r.articulo, t.desc_tipo_norma, n.desc_norma
    FROM normas n, rel_nodo_tem r, tipo_norma t
    WHERE r.id_norma = n.id_norma 
    AND r.id_tipo_norma = n.id_tipo_norma
    AND n.id_tipo_norma = t.id_tipo_norma 
    AND r.cod_nodo = :codNodo
    ORDER BY t.desc_tipo_norma ASC, n.fec_norma DESC, n.id_norma DESC'
我尝试过这个,但没有得到正确的结果:

     $norms = Norm::join('rel_nodo_tem', 'rel_nodo_tem.id_norma', '=', 'normas.id_norma')
    ->where('rel_nodo_tem.id_tipo_norma', '=', 'normas.id_tipo_norma')
    ->where('rel_nodo_tem.cod_nodo', $codNodo)
    ->join('tipo_norma', 'normas.id_tipo_norma', '=', 'tipo_norma.id_tipo_norma')
    ->select('normas.id_norma','normas.id_tipo_norma','normas.texto_norma as text_norm','normas.fec_norma','normas.desc_norma', 'tipo_norma.desc_tipo_norma', 'rel_nodo_tem.cod_nodo', 'rel_nodo_tem.articulo')
    ->orderBy('tipo_norma.desc_tipo_norma', 'asc')
    ->orderBy('normas.fec_norma', 'desc')
    ->orderBy('normas.id_norma', 'desc')
    ->paginate(20);
使用以下命令:

->whereColumn('rel_nodo_tem.id_tipo_norma', '=', 'normas.id_tipo_norma')
请尝试以下查询:

 $norms = DB::table('normas')
        ->leftJoin('rel_nodo_tem','normas.id_norma','=','rel_nodo_tem.id_norma')
        ->leftJoin('tipo_norma', 'normas.id_tipo_norma', '=', 'tipo_norma.id_tipo_norma')
        ->where('rel_nodo_tem.id_tipo_norma', '=', 'normas.id_tipo_norma')
        ->where('rel_nodo_tem.cod_nodo', $codNodo)
        ->select('normas.id_norma','normas.id_tipo_norma','normas.texto_norma as text_norm','normas.fec_norma','normas.desc_norma', 'tipo_norma.desc_tipo_norma', 'rel_nodo_tem.cod_nodo', 'rel_nodo_tem.articulo')
        ->orderBy('tipo_norma.desc_tipo_norma', 'asc')
        ->orderBy('normas.fec_norma', 'desc')
        ->orderBy('normas.id_norma', 'desc')
        ->paginate(20);

谢谢我会试试看,我会让你知道它是有效的!非常感谢!但是这里的行为到底是什么呢?你必须明确地告诉Laravel,
normas.id\u tipo\u norma
不是一个字符串值,而是一个列名。我用一个更好的解决方案替换了我的答案。给我们看一个示例(限制在五个以内)原始查询的结果和您尝试的结果,以便我们能够确定问题。我正在开发一个用.asp编写的旧大系统,唯一需要比较的方法是使用旧的输出,在这种情况下,它们接收的规范比我少,并且我接收的规范类型不同。