Php Laravel控制器:“for”循环仅获取第一次迭代的值

Php Laravel控制器:“for”循环仅获取第一次迭代的值,php,laravel,Php,Laravel,很抱歉问这个问题,但我似乎找不到解决问题的办法。我的代码如下: for($x=0; $x<=2; $x++){ $users = User::where('division', 1) ->where('has_been_assigned', null) ->first(); $assignedLead = NewLeads::where('pic_endorsed_to', nul

很抱歉问这个问题,但我似乎找不到解决问题的办法。我的代码如下:

for($x=0; $x<=2; $x++){
            $users = User::where('division', 1)
            ->where('has_been_assigned', null)
            ->first();

            $assignedLead = NewLeads::where('pic_endorsed_to', null)
            ->first();

            $assignedLead->pic_endorsed_to = $users->id;
            $assignedLead->save();

        }
相反,我得到的是:

 id     pic_endorsed_to (FKEY)
  1                         1
  2                         1
  3                         1
有人能告诉我如何达到预期的结果吗


多谢各位

您正在跑步->第一;每次where子句都没有任何动态条件,因此它将一次又一次地只获取第一条记录。

您正在运行->first;每次where子句上没有任何动态条件,因此它将一次又一次地只获取第一条记录。

这是因为您没有在循环中的任何位置使用$x使其成为动态的。
可以根据需要在某处使用$x条件,也可以先删除它。

因为您没有在循环中的任何位置使用$x使其成为动态的。
按照要求在某处使用$x,或者先删除。

为了简单起见,请使用OP在我撰写本文时提供的代码:

   $users = User::where('division', 1)
        ->where('has_been_assigned', null)
        ->get();
   foreach ($users as $user){
    $assignedLead = NewLeads::where('pic_endorsed_to', null)
        ->first();
    if(assignedLead){
        $assignedLead->pic_endorsed_to = $users->id;
        $assignedLead->save();
    }else{ break; }
   }
我在这里所做的只是获取用户并将这些用户的id分配给值为null的NewLeads


在每个循环中,它将获取pic_背书为null的第一行,并将值更新为用户id。

为简单起见,请使用我编写时OP提供的代码:

   $users = User::where('division', 1)
        ->where('has_been_assigned', null)
        ->get();
   foreach ($users as $user){
    $assignedLead = NewLeads::where('pic_endorsed_to', null)
        ->first();
    if(assignedLead){
        $assignedLead->pic_endorsed_to = $users->id;
        $assignedLead->save();
    }else{ break; }
   }
我在这里所做的只是获取用户并将这些用户的id分配给值为null的NewLeads

在每个循环中,它将获取pic_背书_为null的第一行,并将值更新为用户id。

首先更改->第一个到->获取

然后检查此行,并使用下面给出的代码进行更改:

where('pic_endorsed_to', null)
            ->first();
应该是

where('pic_endorsed_to', $mydetail)
            ->get();
首先,更改->首先更改->获取

然后检查此行,并使用下面给出的代码进行更改:

where('pic_endorsed_to', null)
            ->first();
应该是

where('pic_endorsed_to', $mydetail)
            ->get();

谢谢你的意见。扎希德的评论似乎解决了我目前的问题:


您没有更新用户。因此,在每次迭代中都有相同的用户。如果没有可分配给的用户呢扎希德·哈桑·埃蒙

只需使用assigned标记/更新用户的状态


谢谢大家!

感谢您的投入。扎希德的评论似乎解决了我目前的问题:


您没有更新用户。因此,在每次迭代中都有相同的用户。如果没有可分配给的用户呢扎希德·哈桑·埃蒙

只需使用assigned标记/更新用户的状态


谢谢大家!

循环的用途是什么?在$assignedLead和$users查询中,您正在获取一条相同的记录?您好,$assignedLead获取lead,或者您可以说是Tasks collection,而$users访问User collection以获取要分配给lead或task的用户。哦,您问的是loop的用法。我的目标是一个接一个地获取与设置的迭代次数相同的记录。您不是在更新用户。因此,在每次迭代中都有相同的用户。如果没有用户分配给??你好,我可以为它创建一个验证。但我仍在为用户分配潜在客户/任务的过程中。但正如您所看到的,我很难分配一个又一个用户,因为for循环只获取第一个用户的值,而不获取下两个用户的值?在$assignedLead和$users查询中,您正在获取一条相同的记录?您好,$assignedLead获取lead,或者您可以说是Tasks collection,而$users访问User collection以获取要分配给lead或task的用户。哦,您问的是loop的用法。我的目标是一个接一个地获取与设置的迭代次数相同的记录。您不是在更新用户。因此,在每次迭代中都有相同的用户。如果没有用户分配给??你好,我可以为它创建一个验证。但我仍在为用户分配潜在客户/任务的过程中。但是正如您所看到的,我很难分配一个又一个用户,因为for循环只获取第一个用户的值,而不获取下两个用户的值。