如何计算foreach循环的值?

neekobn8  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(409)

我正在创建我的第一个laravel项目,我想从'nutrition'sql表中获取信息,并计算每个用户的结果。我使用foreach输出我的users表ant my***.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;   
}
w1jd8yoj

w1jd8yoj1#

试试这个,如果我完全理解你的问题:)
//路线

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的内部,检查这个链接在blade中使用php

@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

为了你在编码中的平静:)

iyfamqjs

iyfamqjs2#

理想情况下,你会创建一个 Nutrition 雄辩的模型和使用拉威尔的关系函数。但如果你不能/不想,那就自己创造吧。

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

然后:

// In blade view
    @foreach ($users as $user)
        {{ $user->nutritions()->count() }}
    @endforeach

ps您可以使用 DB facade的选择方法就像我上面所做的,而不是写出原始查询。
如果你摆好table,用雄辩的语言 Nutrition 那么就这么简单了:

// In app/User.php
    public function nutritions()
    {
        return $this->hasMany('App\Nutrition','user');
    }

请注意,如果您走的是雄辩的路线,那么有必要更改您的db模式以使用laravel命名约定,例如 User s应该存储在一个名为 users 还有你的 nutrition table会变成 nutritionsuser_id 作为外键。

lx0bsm1f

lx0bsm1f3#

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

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

相关问题