【发布时间】:2017-09-16 01:49:50
【问题描述】:
这是场景。假设我有一个表Foo 有两列bar 和baz。我想检查bar 和baz 的条件。此条件仅适用于两列之一。无论哪一列是正确的,我都想选择另一列。
我可以把它写成两个单独的查询,像这样:
$one = Foo::select('bar as qux')->where('baz', $value);
$two = Foo::select('baz as qux')->where('bar', $value);
(为了便于说明,我的示例中的条件是检查列是否等于$value。)
在那之后,我想我可以得到两个查询的结果并将它们合并。但是,我真的很想使用Paginator,以及希望它成为单个查询的其他原因。
我可以使用以下方法从表中选择所有相关行:
$rows = Foo::where('baz', $value)->orWhere('bar', $value);
但是我不知道如何从那里有条件地选择bar 或baz。看来我寻求的解决方案将是上述两种方法的某种组合。
是否可以使用 Eloquent 在单个查询中执行此操作?我想我可以执行原始查询,但如果可能的话,我宁愿完全远离原始查询。谢谢。
【问题讨论】:
标签: php mysql laravel orm eloquent