Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 拉威尔雄辩地回答了一个问题_Laravel_Eloquent - Fatal编程技术网

Laravel 拉威尔雄辩地回答了一个问题

Laravel 拉威尔雄辩地回答了一个问题,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', '%

在laravel中,我可以使用许多where规则作为数组,并使用laravel eloquent
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()
方法执行相同的操作。