【问题标题】:How is a subquery with join in laravel 5.5?在 laravel 5.5 中加入子查询如何?
【发布时间】:2019-04-25 16:09:07
【问题描述】:

我有一个表,它与其他表有两个关系,但字段相同。

例如:

first_user_in_comment_id & last_user_in_comment_id

所以这些字段与名称用户name_user有关系

我的 laravel 版本是 5.5

 $conseguirTabla = DB::table('ALUMNOS_HISTORIAL_COMENTARIOS')   
        ->JOIN('CICLOS_ESCOLARES','CICLOS_ESCOLARES.ID','=','ALUMNOS_HISTORIAL_COMENTARIOS.CICLO_ID')
        ->JOIN('USUARIOS','USUARIOS.ID','=','ALUMNOS_HISTORIAL_COMENTARIOS.USUARIO_ID')
       ->JOIN('USUARIOS','USUARIOS.ID','=','ALUMNOS_HISTORIAL_COMENTARIOS.USUARIO_MODIFICACION_ID')
            ->SELECT('USUARIOS.NOMBRE AS NOMBRE', 
                    'CICLOS_ESCOLARES.CICLO_ESCOLAR AS CICLO_ESCOLAR',
                    'ALUMNOS_HISTORIAL_COMENTARIOS.FECHA_COMENTARIO AS FECHA_COMENTARIO',
                    'ALUMNOS_HISTORIAL_COMENTARIOS.COMENTARIO AS COMENTARIO',
                    'ALUMNOS_HISTORIAL_COMENTARIOS.USUARIO_MODIFICACION_ID AS MODIFICACION'
            )   

            ->WHERE('ALUMNO_ID',$idAlumno)         
            ->get();

【问题讨论】:

  • 显然不应该存在同一个表中的两个连接
  • 这并不完全正确,有self joins。到底有什么问题?

标签: php sql laravel laravel-5.5


【解决方案1】:

您可以使用 DB::raw 例如:

       ->JOIN(\DB::raw('USUARIOS as x'),'x.ID','=','ALUMNOS_HISTORIAL_COMENTARIOS.USUARIO_MODIFICACION_ID')
       ->JOIN(\DB::raw('(select * from USUARIOS) as y'),'y.ID','=','ALUMNOS_HISTORIAL_COMENTARIOS.USUARIO_MODIFICACION_ID')

【讨论】:

  • 我不太明白,能否把完整的代码块传给我?
  • 第一行是我只是在表中添加别名,第二行是在连接中使用子查询
猜你喜欢
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 2018-10-31
  • 1970-01-01
  • 2015-06-24
  • 2015-07-14
  • 2013-08-07
相关资源
最近更新 更多