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
Php Laravel 5.8-如何更新循环内的表_Php_Laravel_Eloquent_Laravel Collection - Fatal编程技术网

Php Laravel 5.8-如何更新循环内的表

Php Laravel 5.8-如何更新循环内的表,php,laravel,eloquent,laravel-collection,Php,Laravel,Eloquent,Laravel Collection,我有两个表:“用户”和“记录”。表“记录了”“我需要将(更新)col“fk_user”应用到从“用户””获取的表中 直到现在都没什么大不了的,对吗?如果是这样的话 我正在做的是: 使用查询生成器(DB)查询用户(目前只有5个用户)表,并执行如下操作:$Users->each(function($i)use($Query)){ 在“.each”循环中,我只调用: $users->each(函数($i)use($query){ $query->update(['fk\u user'=>$i->id,

我有两个表:“用户”和“记录”。表“记录了”“我需要将(更新)col“fk_user”应用到从“用户””获取的表中

直到现在都没什么大不了的,对吗?如果是这样的话

我正在做的是:

  • 使用查询生成器(DB)查询用户(目前只有5个用户)表,并执行如下操作:
    $Users->each(function($i)use($Query)){
  • 在“.each”循环中,我只调用:
  • $users->each(函数($i)use($query){

    $query->update(['fk\u user'=>$i->id,'status'=>1,'updated\u at'= \碳\碳::现在())

  • 因此,结果应该是每个用户30次匹配中的150次更新
  • 但是当我查询表时,有300个更新
  • 为什么?
  • 我真的不明白为什么

    这正是这里的工作方式:

    $query = DB::table('records as bp')
    ->whereRaw('bp.control = '.$control.' AND bp.status = 0')
    ->limit(30);
    
    $users = Users::all();
    $users->each(function($i) use ($query){
            $query->update(['fk_user' => $i->id, 'status' => 1, 'updated_at' => \Carbon\Carbon::now()]);
    });
    
    重要提示:我已经尝试在“each”中声明$query,结果是一样的!


    谢谢大家的支持。

    DB::table('records_table')->limit(30)->update(['fk_user'=>$i->id]);
    这不就是在每个循环中更新相同的30条记录吗?您是否缺少一个
    偏移量()
    ?您能提供完整的(或者至少是最相关的)数据吗你正在使用的代码?如果我们必须把东西拼凑起来,调试起来就困难多了together@TimLewis没有。因为“->限制(30)”和“状态”。明白了,尽管
    ->whereRaw('status'=0)
    看起来像是语法错误应该足够了。@Timleis,正如你要求的那样,请看上面。我保证,这不是语法错误,只有在不方便的情况下,例程才能正常运行。顺便说一句,请记住,我使用的是“whereRaw”-查询生成器,目前没有说服力。@TimLewis-做得好。我正在使用barryvdh/laravel debugbar。在查询中,我准确地看到了预期的结果,6个查询,1个用于“用户”,5个用于“记录”。我想,可能一定有缓存……在最后,it再次执行。