Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

348
Views
Seleccione valores en la matriz, separe y consulte la base de datos laravel

Tengo ids que vienen por array, necesito sacarlos todos y hacer selecciones en el banco usando cada uno con diferentes retornos de acuerdo a la selección. Puedo traer los números, pero no funciona para separar y usar la selección automáticamente de acuerdo con la cantidad de registros en la matriz.

A continuación se muestra la forma en que obtengo la matriz:

Matriz de resultados $escuelas

 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 ) )

En el controlador que estoy usando para traer solo los valores que quiero, pero necesito hacer una selección con ellos y separarlos de acuerdo con cada uno.

Controlador.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 ) }*/

se devuelve la matriz 31, necesito 4

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si solo necesita obtener valores de id en una matriz/colección separada, puede probar el método de extracción en lugar del bucle for:

 // Get schools as a Collection $schools = collect($api->schools); // Pluck out all the 'id' key values $info = $schools->pluck('id');
over 4 years ago · Santiago Trujillo Report

0

Por lo que entiendo, desea recuperar la suma de los resultados.

Para eso, su código debería verse así:

 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 );

O un poco más agradable:

 $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 );

EDITAR O incluso mejor (no estoy seguro de si esto funciona, pero entiendes la idea). Esto solo ejecutará una consulta para todas las escuelas en lugar de ejecutar una consulta separada para cada escuela:

 $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 );
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!