我正在使用以下 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'

我将如何实现这一目标?

最佳答案

这应该有效:

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();

关于php - Laravel Eloquent - 如何分组条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50019929/

10-11 04:20
查看更多