【发布时间】:2021-02-25 19:01:25
【问题描述】:
我正在使用Laravel Framework 6.16.0。
我有以下 sql 查询:
SELECT DISTINCT
`companies`.*
FROM
`companies`
LEFT JOIN `trx` ON `trx`.`companies_id` = `companies`.`id`
WHERE
`trx`.`transaction_date` >= 2020-11-12 AND companies.symbol NOT IN (SELECT DISTINCT
companies.symbol
FROM
`companies`
LEFT JOIN articles a ON a.companies_id = companies.id
WHERE
a.created_at >= 2020-11-12
ORDER BY
created_at
DESC)
ORDER BY
transaction_date
DESC
我创建了以下雄辩的查询:
DB::connection('mysql_prod')->table('companies')->select('companies.symbol')
->leftJoin('trx', 'trx.companies_id', '=', 'companies.id')
->where('trx.transaction_date', '>=', Carbon::today()->subDays(1)->startOfDay())
->orderBy('transaction_date', 'desc')
->distinct()
->get('symbol');
但是,我不确定如何在我的 eloquent 查询中打包以获取所有应该排除的 symbol。
非常感谢您的回复!
【问题讨论】:
-
既然选择了
companies.symbol,是不是还要再提->get('symbol')?我认为->get()可能有用... -
您没有使用 Eloquent,您使用的是查询构建器。如果您在模型之间建立关系并使用 Eloquent,这会容易得多。
标签: php laravel laravel-query-builder