Laravel Eloquent Union 查询

新手上路,请多包涵

所以我有以下查询:

 $a = Model::where('code', '=', $code)
    ->where('col_a', '=' , 1)
    ->orderBy(DB::raw('FIELD(layout, "normal", "split", "flip", "double-faced", "") ASC, layout'))

$b = Model::where('code', '=', $code)
    ->where('col_b', '=' , 1)
    ->orderBy(DB::raw('FIELD(layout, "normal", "split", "flip", "double-faced", "") ASC, layout'))

$a->union($b)->get();

当我先 ‘orderBy()’ 然后联合时,没有排序发生。

当我单独查询 ‘\(a' 或 '\)b’ 时,’orderBy()’ 工作正常。

当我以以下方式执行此操作时,’orderBy()’ 会作为一个整体发生。

 $a->union($b)
    ->orderBy(DB::raw('FIELD(layout, "normal", "split", "flip", "double-faced", "") ASC, layout'))
    ->get();

我怎样才能做到这一点,以便“orderBy()”分别适用于每个人,然后将结果合并回来?似乎它应该工作。

编辑:如果有人可以提供一种方法来做到这一点,即使它是普通的 MySQL,我也会选择你的作为答案,因为我认为 Eloquent 可能存在错误。

原文由 Howard 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 552
1 个回答

尝试以下操作:

 $a = Model::where('code', '=', $code)
->where('col_a', '=' , 1);

$b = Model::where('code', '=', $code)->where('col_b', '=' , 1)
->union($a)
->get();

$result = $b;

原文由 Max Roa 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题