php - Laravel 8 内部连接两个表
问题描述
我正在尝试从我的 Laravel 数据库中的两个表中获取不同的列,我是 joins 新手,但是按照文档我认为我的语法是正确的,除了我收到以下错误:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'created_at' in on clause is ambiguous (SQL: select `data_source_one`.`event_count`, `data_source_two`.`sessions` from `data_source_one` inner join `data_source_two` on `created_at` >= `2021-01-11 10:57:45`)
我有两张桌子:
- data_source_one
- data_source_two
每个表都有 Laravelcreated_at
列,一个表有一个sessions
列,另一个有event_count
,并且我有查询前 14 天的数据。所以不知道为什么它无法获取数据?
我的PHP是:
public function getSources(Request $request)
{
$data = DB::table('data_source_one')
->join('data_source_two', 'created_at', '>=', Carbon::now()->subDays(14))
->select('data_source_one.event_count', 'data_source_two.sessions')
->get();
return response()->json($data, 200);
}
解决方案
如错误消息中所示,“created_at”列不明确,因为它存在于两个表中。所以你必须指定你指的是哪个“created_at”。
也许是这样的:
$data = DB::table('data_source_one as DSO')
->join('data_source_two as DST', //here, join your two tables by a common column )
->select('DSO.event_count', 'DST.sessions')
->where('DST.created_at', '>=', Carbon::now()->subDays(14))
->get();
推荐阅读
- ios - iOS 13 Core NFC - 如何写一条空消息来擦除标签?
- javascript - 如何在 JavaScript 中检索 Promise 的值
- date - 在logstash中解析特定日期
- python - Twilio,收集挂起,在大提示下我可以停止收集,并发送部分结果
- python - ''AttributeError: module 'selenium.webdriver' has no attribute 'Chrome''' 我正在从终端运行文件
- javascript - 错误:已超过期限 - 调用 firebase 可调用云函数 (onCall) 时。onRequest 工作正常
- java - Java Stream映射到多个属性
- ios - Swift TableView 人口
- git - 在 git rebase 期间备份到以前的冲突
- sql - 定义与整个表的关系