Laravel 拉威尔雄辩地回答了一个问题
在laravel中,我可以使用许多where规则作为数组,并使用laravel eloquentLaravel 拉威尔雄辩地回答了一个问题,laravel,eloquent,Laravel,Eloquent,在laravel中,我可以使用许多where规则作为数组,并使用laravel eloquentwhere方法对数据库执行一次查询,以获得所需的结果 代码: $where = []; $where[] = ['user_id', '!=', null]; $where[] = ['updated_at', '>=', date('Y-m-d H:i:s')]; if($request->searchTerm) { $where[] = ['title', 'like', '%
where
方法对数据库执行一次查询,以获得所需的结果
代码:
$where = [];
$where[] = ['user_id', '!=', null];
$where[] = ['updated_at', '>=', date('Y-m-d H:i:s')];
if($request->searchTerm) {
$where[] = ['title', 'like', '%' . $request->searchTerm . '%'];
}
Model::where($where)->get();
$model = new Model;
$whereIn = [];
$whereIn[] = ['date', '>=', Carbon::now()->subDays(10)];
$whereIn[] = ['user_role', 'candidate'];
if (!empty($scope) && is_array($scope)) {
$whereIn[] = ['user_id', $scope];
}
if(is_array($employment) && !empty($employment)) {
$whereIn[] = ['employment', $employment];
}
if(is_array($experience) && !empty($experience)) {
$whereIn[] = ['experience', $experience];
}
foreach ($whereIn as $v) {
$model = $model->whereIn($v[0], $v[1]);
}
dump($model->get());
问题部分:
$where = [];
$where[] = ['user_id', '!=', null];
$where[] = ['updated_at', '>=', date('Y-m-d H:i:s')];
if($request->searchTerm) {
$where[] = ['title', 'like', '%' . $request->searchTerm . '%'];
}
Model::where($where)->get();
$model = new Model;
$whereIn = [];
$whereIn[] = ['date', '>=', Carbon::now()->subDays(10)];
$whereIn[] = ['user_role', 'candidate'];
if (!empty($scope) && is_array($scope)) {
$whereIn[] = ['user_id', $scope];
}
if(is_array($employment) && !empty($employment)) {
$whereIn[] = ['employment', $employment];
}
if(is_array($experience) && !empty($experience)) {
$whereIn[] = ['experience', $experience];
}
foreach ($whereIn as $v) {
$model = $model->whereIn($v[0], $v[1]);
}
dump($model->get());
现在,我需要使用Laravel-elounting方法,其中
和数组参数,以通过一个查询获得所需的结果
我尝试了循环方法,但对数据库进行了许多查询
代码:
$where = [];
$where[] = ['user_id', '!=', null];
$where[] = ['updated_at', '>=', date('Y-m-d H:i:s')];
if($request->searchTerm) {
$where[] = ['title', 'like', '%' . $request->searchTerm . '%'];
}
Model::where($where)->get();
$model = new Model;
$whereIn = [];
$whereIn[] = ['date', '>=', Carbon::now()->subDays(10)];
$whereIn[] = ['user_role', 'candidate'];
if (!empty($scope) && is_array($scope)) {
$whereIn[] = ['user_id', $scope];
}
if(is_array($employment) && !empty($employment)) {
$whereIn[] = ['employment', $employment];
}
if(is_array($experience) && !empty($experience)) {
$whereIn[] = ['experience', $experience];
}
foreach ($whereIn as $v) {
$model = $model->whereIn($v[0], $v[1]);
}
dump($model->get());
首先,我厌倦了$model->where($where)->get()
,但返回错误。使用可以通过一个查询获得结果,其中
没有循环
注意:My
$其中
数组将是动态数组 其中
是一个查询生成器函数,因此不能直接在模型上使用它。相反,您应该创建一个查询生成器实例。我还建议您使用when
而不是if
语句:
$models = Model::when(!empty($scope) && is_array($scope), function ($query) use ($scope) {
$query->whereIn('user_id', $scope);
})->when(!empty($employment) && is_array($employment), function ($query) use ($employment) {
$query->whereIn('employment', $employment);
})->when(!empty($experience) && is_array($experience), function ($query) use ($experience) {
$query->whereIn('experience', $experience);
})->get();
dump($models);
when
在第一个参数为true时基本上运行函数。在。下的文档中有更多详细信息,其中
是一个查询生成器函数,因此您不能直接在模型上使用它。相反,您应该创建一个查询生成器实例。我还建议您使用when
而不是if
语句:
$models = Model::when(!empty($scope) && is_array($scope), function ($query) use ($scope) {
$query->whereIn('user_id', $scope);
})->when(!empty($employment) && is_array($employment), function ($query) use ($employment) {
$query->whereIn('employment', $employment);
})->when(!empty($experience) && is_array($experience), function ($query) use ($experience) {
$query->whereIn('experience', $experience);
})->get();
dump($models);
when
在第一个参数为true时基本上运行函数。由于您的$中的变量是一个数组,因此在下的文档中有更多详细信息,它的工作原理如下:
$model->whereIn($whereIn[0][0], $whereIn[0][1])->get();
如果它只是一个简单的数组,那么您可以使用:
$model->whereIn($whereIn[0], $whereIn[1])->get();
由于您的$其中
变量是一个数组数组,因此其工作原理如下:
$model->whereIn($whereIn[0][0], $whereIn[0][1])->get();
如果它只是一个简单的数组,那么您可以使用:
$model->whereIn($whereIn[0], $whereIn[1])->get();
口若悬河
$model = Model::whereIn('id', array(1, 2, 3))->get();
或者使用查询生成器,然后:
$model = DB::table('table')->whereIn('id', array(1, 2, 3))->get();
口若悬河
$model = Model::whereIn('id', array(1, 2, 3))->get();
或者使用查询生成器,然后:
$model = DB::table('table')->whereIn('id', array(1, 2, 3))->get();
你的代码必须工作,你有什么错误?@ZakariaAcharki我的代码可以处理许多查询,但我需要一个解决方案query@AndreasHunter查看变量名,您需要一个where
,而不是where
@AndreasHunter您正在$model=newmodel上查询where
?@vivek_23我展示了一个示例,通过where()
方法,您可以使用具有多种条件的数组,向数据库发送单个查询并获得结果。在一个给定的问题上,我问您是否可以使用where()
方法执行相同的操作。您的代码必须工作,您有什么错误?@ZakariaAcharki我的代码适用于许多查询,但我需要一个解决方案query@AndreasHunter看看你的变量名,您需要一个where
,而不是where
@AndreasHunter您在$model=newmodel上查询where
?@vivek_23我展示了一个示例,通过where()
方法,您可以使用具有多种条件的数组,向数据库发送单个查询并获得结果。对于给定的问题,我询问您是否可以使用where()
方法执行相同的操作。