【问题标题】:Foreach loop runs query onceForeach 循环运行一次查询
【发布时间】:2019-01-05 05:33:04
【问题描述】:

我已经为此花费了几个小时,但找不到解决方法,我有一个查询,可以获取所有在请求者或入站部分中具有个人资料 ID 的朋友,并检查其是否已获批准,这部分是正确的,就好像我回显查询它返回所有正确的行,现在当对于每一行我想要循环并在数据库中搜索与好友表中的被请求者 ID 或入站 ID 相关的用户时,目前它只循环一次,我知道这一点,因为我循环了$rowsget$temp1 并且来自$temp1 的用户名仅与$rowsget 的第一行相关。非常感谢任何帮助,因为我的脑袋快要爆炸了。

查询

$rowsget = DB::table('friends')
            ->where( function(Builder $query) use($uid) {
                $query->where('requesteeid', $uid)
                      ->orWhere('inboundid', $uid);
            })
            ->where('approved', true)
            ->get(['requesteeid', 'inboundid']);

if(count($rowsget) > 0){
    foreach($rowsget as $get) {
        $temp1 = DB::table('users')
                ->where('id', $get->requesteeid)
                ->orWhere('id', $get->inboundid)
                ->get(['username']);
    }
    //Echoing data (just test )
    echo $temp1;
    echo $rowsget;
}

结果(用户名是前 2 个 id 的结果)

[{"username":"Max11"},{"username":"bob11"}]
[{"requesteeid":4,"inboundid":1},{"requesteeid":4,"inboundid":2}] 

【问题讨论】:

  • $rowsget的结果是多少,是不是不止一个?
  • 是的,它使用与当前用户配置文件的 id 相同的 inboundid 或 requesteeid 回显所有结果,然后检查好友请求是否被批准,如果是,它会回显它,它得到的问题查询运行所有这些以根据
  • 你是说 $rowsget 有多个条目并且循环仍然只执行一次?
  • $rowsget 不在循环中?它只是获取行,然后循环意味着遍历 $rowsget 的每一行
  • 无论如何你可以显示完整的代码(可能超过teamviewer)?因为您的代码似乎是正确的。您的数据可能有问题。

标签: php database laravel


【解决方案1】:

您正在覆盖 $temp1 中的条目,并且您在循环之外打印它,因此它将始终为您提供最后一个条目。

使其成为一个包含所有条目的数组:

$temp1 = [];
if(count($rowsget) > 0){
    foreach($rowsget as $get) {
        $temp1[] = DB::table('users')->where('id', $get->requesteeid)- 
>orWhere('id', $get->inboundid)->get(['username']);

 }
print_r($temp1);

【讨论】:

    【解决方案2】:

    刚刚解决了这个问题

    foreach($rowsget as $get) {
            $temp1 = DB::table('users')->where('id', $get->requesteeid)->orWhere('id', 
    $get->inboundid)->get(['id', 'username', 'avatar']);
            foreach ($temp1 as $key) {
                if($key->id != $uid) {
                echo $key->username;
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多