选择数组中的值,分离并查询数据库laravel



我有按数组来的id,我需要将它们全部获取,并根据选择使用具有不同回报的每个id在银行中进行选择。我可以带上数字,但根据阵列中记录的数量自动分离和使用select是不起作用的。

下面是我获取数组的方法:

结果数组$schools

Array
(
[0] => stdClass Object
(
[id] => 1
[school_type_id] => 2
[external_id] => 
[name] => School1
[active] => 1
[created_at] => 2020-02-21 23:42:11
[updated_at] => 2020-02-21 23:42:11
[deleted_at] => 
[active_text] => Ativo
)
[1] => stdClass Object
(
[id] => 81
[school_type_id] => 2
[external_id] => 
[name] => School2
[active] => 1
[created_at] => 2015-05-27 18:08:52
[updated_at] => 2015-05-27 18:08:52
[deleted_at] => 
[active_text] => Ativo

)
)

在我使用的控制器中,我只带来我想要的值,但我需要用它们进行选择,并根据每个值进行分离。

Controller.php

$schools = collect($api->schools);
$info = $schools->pluck('id');
for($i = 0;$i<count($info);$i++){
$select = DB::table('sys_record')
->where('sys_record.id_step','<=',4)
->where('sys_users.schoolId','=',$info[$i])
->join('sys_users', 'sys_users.id_jovens', '=', 'sys_record.id_user')
->get();
$information[] = count($select);  
print_r($information);  
/*return Array
(
[0] => 3
)
Array
(
[0] => 3
[1] => 1
)
}*/

数组31正在返回,我需要4个

据我所知,您希望检索结果的总和。

为此,您的代码应该如下所示:

for($i = 0;$i<count($info);$i++){
$select = DB::table('sys_record')
->where('sys_record.id_step','<=',4)
->where('sys_users.schoolId','=',$info[$i])
->join('sys_users', 'sys_users.id_jovens', '=', 'sys_record.id_user')
->get();
$information[] = count($select);
}
$total = array_sum($information);
print_r( $total );

或者更好一点:

$schools = collect($api->schools);
$info = $schools->pluck('id');
$information = 0;
foreach( $info as $k => $i){
$results_count = DB::table('sys_record')
->where('sys_record.id_step','<=',4)
->where('sys_users.schoolId','=',$info[$i])
->join('sys_users', 'sys_users.id_jovens', '=', 'sys_record.id_user')
->count();
$information += $results_count;
}
print_r( $information );

编辑甚至更好(不确定这是否有效,但你已经明白了(。这将只对所有学校运行一个查询,而不是对每所学校运行单独的查询:

$schools = collect($api->schools);
$info = $schools->pluck('id');
$results_count = DB::table('sys_record')
->where('sys_record.id_step','<=',4)
->whereIn('sys_users.schoolId', $info)
->join('sys_users', 'sys_users.id_jovens', '=', 'sys_record.id_user')
->count();
print_r( $results_count );

如果您只需要在单独的数组/集合中获取id值,您可以尝试pull方法而不是for循环:


// Get schools as a Collection
$schools = collect($api->schools);
// Pluck out all the 'id' key values
$info = $schools->pluck('id');

最新更新