如何计算foreach循环的值?

时间:2018-12-19 19:22:07

标签: mysql sql laravel foreach

我正在创建我的第一个laravel项目,我想从“营养” sql表中获取信息并计算每个用户的结果。我使用foreach将我的“用户”表输出到我的***。blade.php(主题文件)。我想做一些对每个用户都有价值的事情。

我在控制器内的功能:

public function nutrition() {
       $id = Auth::User() -> id;
        $users = DB::SELECT('SELECT * FROM clients WHERE tr_id = ?', ["$id"]);
        return view('mitybos-valdymas', compact('users'));
}

我的路线:
Route::get('/mityba', 'HomeController@nutrition');

内部***。blade.php

  @foreach ($users as $user)
    {{ $user->name }}
  @endforeach

示例我想在laravel(不是php)中执行的操作:

$sql = mysqli_query($conn, "SELECT * FROM clients WHERE tr_id = 1");
while ($row = mysqli_fetch_array($sql)) {  
      $u_id = $row['id'];  
      $name = $row['name'];  
      $sql2 = mysqli_query($conn, "SELECT * FROM nutrition WHERE user = '$u_id'");  
      $count = mysqli_num_rows($sql2);    
      echo "User name - " . $name. " / RESULT - " . $count;   
}  

3 个答案:

答案 0 :(得分:3)

理想情况下,您将创建一个<script type="text/javascript"> $(document).ready(function(){ $('#pizzaOption>input[type="checkbox"]').click(function() { if ($(this).is(':checked')) { var pizzaPrice=$(this).closest("#pizzaOption").data('price'); console.log(price); $('#total').html(pizzaPrice); } else { var pizzaPrice=0; $('#total').html(pizzaPrice); } }); }); </script> Eloquent model并使用Laravel的relationship functions。但是,如果您不愿意/不想,请创建自己的。

Nutrition

然后:

    // In app/User.php
    public function nutritions()
    {
        return DB::table('nutrition')->where('user',$this->id);
    }

PS,您可以像上面一样使用 // In blade view @foreach ($users as $user) {{ $user->nutritions()->count() }} @endforeach 门面的方法进行选择,而不用编写原始查询。

如果您修复表并将Eloquent用作DB,那么就很简单:

Nutrition

请注意,如果您采用Eloquent路由,则有必要更改数据库架构以使用Laravel命名约定,例如您的 // In app/User.php public function nutritions() { return $this->hasMany('App\Nutrition','user'); } 应该存储在名为User的表中,并且您的users表将以nutrition作为外键成为nutritions

答案 1 :(得分:1)

这是另一种实现方式,因此它将从0开始直到用户数量

 @foreach ($users as $index => $user)
   {{ $index }}
 @endforeach

答案 2 :(得分:-1)

如果我完全理解您的问题,请尝试:)

//路线

Route::get('/mityba', 'HomeController@nutrition');

// Homecontroller @ nutrition

public function nutrition() {
     $authId = Auth::id();
     $users = DB::table('clients')->where('tr_id', $authId)->get(); //sql1
     return view('mitybos-valdymas', compact('users'));
}

//在mitybos-valdymas.blade.php内部, 检查此链接use PHP in the Blade

@php
  $count = 0; //Initialize variable
@endphp
@foreach ($users as $user)
  $count += 1;
  $result = DB::table('nutrition')->where('user', $user->id)->get() //sql2
  echo "User name - " . $result->name. " / RESULT - " . $count;   
@endforeach

为了您的编码安全:)