代码之家  ›  专栏  ›  技术社区  ›  JsWizard

如何通过php检查通过foreach循环的数据值是否相同或不同

  •  0
  • JsWizard  · 技术社区  · 6 年前

    控制器如下。

    $workings = DB::table('workings')
                         ->where('user_name', $user_name)
                         ->whereMonth('created_at', date('m'))
                         ->orwhere(function ($query) use($user_name) {
                             $query->where('user_name', $user_name)
                             ->whereMonth('deleted_at', date('m'));
                         })
                         ->orderBy('created_at', 'asc')
                         ->orderBy('deleted_at', 'asc')
                         ->paginate(22);
    

    如果laravel视图代码如下所示。

    ...
    @foreach($workings as $working)
      <tr>
          <td>ID</td>
          <td>user_name</td>
      </tr>
      <tr>$user->user_name
          <td>$working->id</td>
          <td>$working->user_name</td>
      </tr>
    @endforeach
    
    @if("all user_name is same")
     user xxxx's total duration is xxxxxx.
    @else
     ...
    @endif
    ...
    

    如果结果如下,那么如何检查用户名是相同的还是不同的?

    ID   user_name
    1    john
    1    john
    2    michael
       ...
       ...
    

    那么如何通过if语句检查这些用户名是相同的还是不同的呢?

    拉维尔5.6版。

    我自己解决了。

    在控制器中

     $userNameDiff = count($query->pluck('user_name')->unique());
    
     return view('workings.index', compact('userNameDiff'));
    

    在视野中

    @if($userNameDiff > 1)
    ...
    @else
    ...
    @endif
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   JsWizard    6 年前

    我自己解决了。

    控制器内

     $userNameDiff = count($query->pluck('user_name')->unique());
    
     return view('workings.index', compact('userNameDiff'));
    

    在视野中

    @if($userNameDiff > 1)
    ...
    @else
    ...
    @endif
    
        2
  •  -1
  •   Manav VVV    6 年前

    正如@olehaugset和@gogol提到的,不要在视图中这样做。视图仅用于数据的呈现。通过db查询得到这个结果并在视图中表示的更好方法。