有时我需要运行非线性查询,聚合或合并数据。
e.g。
SELECT a.field, b.field2
FROM a
JOIN (
SUB QUERY....
) AS b
ON a.a = b.b
ORDER BY ...
但我总是怀疑实施它的最佳方式。我有一些选择,但我真的不喜欢它们中的任何一个:
- DB :: select($ query):如果查询对where或order by子句有一些控制,则简单但有问题
- 使用查询构建器DB :: table() - > join() - > limit():对控件有用但可能过于冗长
- 使用\ Models \ A :: select() - > join() - > limit() - > get():我真的不喜欢因为返回的对象不是模特。
- 使用特殊型号,由于全球范围,具有“强制性”左侧条件:全功能购买可能过度设计
你如何处理这些情况?您认为最佳做法是什么?