Php 将Sql查询转换为雄辩的Laravel 5.6
我需要将此SQL转换为Eloquent,因为我需要分页和检索集合,有人可以帮助我吗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
'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编写的旧大系统,唯一需要比较的方法是使用旧的输出,在这种情况下,它们接收的规范比我少,并且我接收的规范类型不同。