首页 > 解决方案 > Laravel Eloquent - 如何对条件进行分组

问题描述

我正在使用以下雄辩的陈述

Title::where('word', 'lovers')->orWhere('word', 'lover')->where('domain', $resultFromFirstKeyword->domain)->get();

我可以通过 SQL 记录器看到产生以下 SQL

select * from `title` where `word` = 'lovers' or `word` = 'lover' and `domain` = 'www.texasbirdlovers.com'

但是我想生成的 SQL 是

select * from `title` where (`word` = 'lovers' or `word` = 'lover') and `domain` = 'www.texasbirdlovers.com'

我将如何实现这一目标?

标签: phplaraveleloquent

解决方案


这应该有效:

Title::whereIn('word', ['lovers', 'lover'])
    ->where('domain', $resultFromFirstKeyword->domain)
    ->get();

但是,如果您想完全按照您所说的方式组合它们,请尝试以下操作:

Title::where(function($query) {
        $query->where('word', 'lovers')
            ->orWhere('word', 'lover');
    })
    ->where('domain', $resultFromFirstKeyword->domain)
    ->get();

推荐阅读