【发布时间】:2021-04-29 04:20:59
【问题描述】:
我正在尝试从我的 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
每个表都有 Laravel created_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 在两个表中都存在,所以你必须像这样添加表:data_source_two.created_at
-
它说当我有
->join('data_source_two.created_at', '>=', Carbon::now()->subDays(14))时created_at列不存在,但它确实存在 -
无论如何,在我看来,您正在使用 on 语句作为 where 语句...