如何从Laravel中的完整数组中获取每一行中的元素?

How to get an element in each row from a complete array in Laravel?

我在数据库中插入一组元素,我试图为每一行获取一个元素,但我获取的是一行中的所有元素,并且数据库中的每一行都像这样重复

我想为列中的行获取一个元素。我正在使用此查询

$data = DB::table('incidencias')
   ->join('clientes_incid', 'clientes_incid.rif', '=', 'incidencias.rif')
   ->select('incidencias.rif')
   ->distinct()
   ->get();

    foreach ($data as $val) { 
    DB::table('clientes_view')->insert(['resultado' => $data]);

我该如何解决?

因为您要插入 $data 而不是 $val,

你可以获取所有$data,然后一次插入它们,像这样:

$data = DB::table('incidencias')
   ->join('clientes_incid', 'clientes_incid.rif', '=', 'incidencias.rif')
   ->select('incidencias.rif AS resultado')
   ->distinct()
   ->get();
// If you are using Eloquent, you can just use ->toarray();
// For query builder, you need to change stdClass to array, so I use json_decode()
$data = json_decode(json_encode($data, true), true);

DB::table('clientes_view')->insert($data);

updateOrInsert只支持一条记录,所以如果要使用这种方法:

$data = DB::table('incidencias')
   ->join('clientes_incid', 'clientes_incid.rif', '=', 'incidencias.rif')
   ->select('incidencias.rif AS resultado')
   ->distinct()
   ->get();
$data = json_decode(json_encode($data, true), true);
forEach($data as $val) {
    DB::table('clientes_view')->updateOrInsert($val, $val);
}