[英]Laravel: Query return wrong results
I have custom code to get vacancies: 我有自定义代码来获得空缺:
Laravel Eloquent query: Laravel雄辩的查询:
$vacancy = new Vacancy;
$vacancy = $vacancy->has('user')->orWhere('is_express', 1);
$where = [];
$date = Carbon::now()->subDays(10);
$where[] = ['deleted_at', null];
$where[] = ['updated_at', '>=', $date];
$employment = [0];
$vacancy = $vacancy->whereIn('employment', $employment);
$vacancy = $vacancy->where($where)->get();
SQL code: SQL代码:
select * from `vacancies`
where(exists(select * from `users`
where `vacancies`.
`user_id` = `users`.
`id`
and `users`.
`deleted_at`
is null) or `is_express` = 1 and `employment` in ( 0 ) and(`deleted_at`
is null and `updated_at` >= '2019-03-22 08:48:34' )) and `vacancies`.
`deleted_at`
is null
Here is my table structure. 这是我的表结构。
When I run this code or SQL query return vacancies with any employment
. 当我运行任何这段代码或SQL查询返回的空缺
employment
。 For example here in my code I need to vacancies with only employment = 0
but my current result return vacancies with any employments. 例如,在我的代码中,我需要仅
employment = 0
职位空缺,但是我当前的结果返回任何雇用的职位空缺。
Where I have error in my code? 我的代码中哪里有错误?
Can you please try this: 您能尝试一下吗?
$vacancy = Vacancy::whereNull('deleted_at')->where('updated_at', '>=', $date)
->whereIn('employment', $employment)
->where(function($query) {
return $query->has('user')->orWhere('is_express', 1);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.