Laravel 7:查找两个日期之间的关系



我试图通过使用whereHas方法获得两个日期之间的工作关系,但我一直得到Integrity constraint violation,我不确定是什么原因导致这个问题。

我尝试使用withwhere方法,但它们都返回相同的错误。

错误:

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'created_at' in where clause
is ambiguous (SQL: select * from `categories` where exists (select * from `jobs` inner
join `category_job` on `jobs`.`id` = `category_job`.`job_id` where `categories`.`id` = `category_job`.`category_id` and `created_at` = `=<` and `created_at` >= `2022-06-19 23:59:59`))

功能:

/**
*
*/
public function categoriesThisWeek()
{
$categoriesThisWeek = Category::with('jobs')
->whereHas("jobs", function ($query) {
$query
->whereColumn('created_at', '=<', Carbon::now()->startOfWeek())
->whereColumn('created_at', '>=', Carbon::now()->endOfWeek());
});
return  $categoriesThisWeek->get();
}

这两个表可能都有一个created_at列,所以您需要指定要使用哪个(tbl1.created_at)。

您有两个错误,一个是使用whereColumn而不是where而不精确表并使用值(whereColumn是将一列与另一列进行比较),另一个是使用不存在的操作符=<

public function categoriesThisWeek()
{
$categoriesThisWeek = Category::with('jobs')
->whereHas("jobs", function ($query) {
$query
->where('created_at', '<=', Carbon::now()->startOfWeek())
->where('created_at', '>=', Carbon::now()->endOfWeek());
});
return  $categoriesThisWeek->get();
}

相关内容

  • 没有找到相关文章

最新更新