【问题标题】:laravel : convert sqk to laravel OEMlaravel : 将 sqk 转换为 laravel OEM
【发布时间】:2020-05-16 06:20:32
【问题描述】:

请问如何将此 sql 查询转换为 Laravel eloquent ? SQL:

select n.element, n.type, n.note
        from notes AS n
        inner join (
            SELECT element, COUNT(*) AS dupeCount
            FROM notes
            GROUP BY element
            HAVING COUNT(*) > 1
        ) AS oc on n.element = oc.element

我厌倦了使用 DB select 将其转换为 laravel 并且可以工作,但我想在最后添加 where 并在 foreach 循环中使用此代码作为参数更改的地方,但由于将参数放在 signe 引号中,它不起作用

你能帮帮我吗?

【问题讨论】:

  • 向我们展示您尝试过的代码,我们将帮助您纠正错误

标签: sql laravel eloquent


【解决方案1】:

使用 Eloquent 获取子查询。

并且加入子查询长这样,可以使用mergeBindings绑定参数:

$sub_query = Note::groupBy('element')
                ->having(DB::Raw('COUNT(*) > 1'))
                ->select('element', DB::raw('COUNT(*) AS dupeCount'));

Note::join(DB::raw("({$sub_query->toSql()}) AS oc"), "oc.element", "=", "notes.element")
     ->mergeBindings($sub_query->getQuery())
     ->select("notes.element", "notes.type", "notes.note")
     ->get();

【讨论】:

  • 我收到此错误: Illuminate\Database\Query\Builder 类的 ErrorException 对象无法转换为字符串
  • 我在你的代码中修复了这个问题,只是删除 db::table from 1 param on join
猜你喜欢
  • 2019-11-11
  • 1970-01-01
  • 2019-05-29
  • 2016-08-01
  • 2020-05-06
  • 1970-01-01
  • 2017-05-12
  • 2016-04-01
  • 2019-12-03
相关资源
最近更新 更多