【问题标题】:How to build this query into laravel eloquent如何将此查询构建到 laravel eloquent 中
【发布时间】:2017-08-16 01:19:20
【问题描述】:

我有这个问题

select est.*, bf.followup as bf_follow, bf.unidad as bf_unidad, bu.unidad as bu_unidad, bu.asistencia as bu_asistencia, bu.calificacion as bu_calificacion
from estudiantes as est
inner join bluecard as bc on bc.estudiante = est.usuario_id
inner join beneficiarios as bene on bene.usuario_creado = est.usuario_id
inner join (
    select bluecard, followup, unidad
    from bluecard_followups
    order by bf_id desc
) bf on (bf.bluecard = bc.bc_id)
left join (
    select bluecard, unidad, asistencia, calificacion 
    from bluecard_unidades
    order by bu_id desc
) bu on (bu.bluecard = bc.bc_id)

where bc.status = 1
group by est.usuario_id
limit 500

我知道如何使用 eloquent 进行连接,但我不知道如何编写自定义连接。

有没有人发生过类似的事情? 有人需要用 laravel 进行这样的查询吗?

帮帮我! 谢谢

编辑

我这样运行查询:

$estudiantes = Estudiantes::select(
                            DB::raw("
               select est.*, bene.contrato as nro_contrato, bf.followup as bf_follow, bf.unidad as bf_unidad, bu.unidad as bu_unidad, bu.asistencia as bu_asistencia, bu.calificacion as bu_calificacion
              from estudiantes as est
              inner join bluecard as bc on bc.estudiante = est.usuario_id
              inner join beneficiarios as bene on bene.usuario_creado = est.usuario_id
              inner join (
              select bluecard, followup, unidad
              from bluecard_followups
              order by bf_id desc
              ) bf on (bf.bluecard = bc.bc_id)
              left join (
              select bluecard, unidad, asistencia, calificacion
              from bluecard_unidades
              order by bu_id desc
              ) bu on (bu.bluecard = bc.bc_id)

              where bc.status = 1
              group by est.usuario_id
              limit 500"))
                    ->get();

我得到了这个错误:

【问题讨论】:

  • 您需要大量代码 IMO。您可能需要对 Laravel 查询的一部分使用原始 SQL。
  • 是一种方式,但 DB:raw 不会将数据作为集合检索,而是我需要的
  • 不确定你在说什么; Laravel 允许您在需要时在 Laravel 查询中使用原始 SQL。
  • 你能不能至少画出表之间的关系..?另外,您是否真的尝试过 DB:raw 和 dd 的结果?
  • 使用 DB::select(你的 sql)

标签: php mysql laravel eloquent


【解决方案1】:

听起来您不需要加入,而是需要union。 这样,您只需在单独的查询中执行当前的两个连接查询,然后使用联合函数将它们应用到另一个查询。

【讨论】:

    猜你喜欢
    • 2020-03-19
    • 1970-01-01
    • 2014-10-13
    • 2018-10-10
    • 2021-08-17
    • 2021-12-26
    • 2016-02-11
    • 2021-10-04
    • 2018-10-27
    相关资源
    最近更新 更多