在 laravel blade 中的一个 Foreach 循环中传递多个变量

Multiple variable pass in one Foreach loop in laravel blade

我在控制器中有两个变量:

$data = S_core_Country::all();
$cn=\DB::table('s_user_addresses')
   ->join('s_users', 's_users.id', '=', 's_user_addresses.user_id')
   ->join('s_core_countries', 's_core_countries.id', '=', 's_user_addresses.country_id')
   ->value('countryname');                                       

return view('home')->with(['data'=>$data,'cn'=>$cn]);

是否可以像这样在 foreach 循环中查看我的数据

@foreach($data as $data && $cn as $cn)

如果不是,我应该如何在一个 foreach 循环中显示这两个变量?

不幸的是,foreach 的 PHP 或 Blade 语法无效。

为了充分利用 Laravel 框架,我会做的是使用 Eloquent ORM 在用户、地址和国家/地区之间建立关系。然后在你的 blade 模板中,你应该能够做这样的事情:

如果 $data 包含用户:

@foreach($data as $user)
  $user->address->country->countryname
@endforeach

当然,这取决于您在用户、国家/地区和地址模型中定义的关系。

您的 UserModel 可能包含的示例:

public function address()
{
  return $this->hasOne('UserAddress', 'foreign_key', 'local_key');
}

以上代码只是一个示例,您显然需要将其替换为正确的值。请参阅 Laravel Documentation on Relationships,但我绝对认为建立适当的 ORM 关系是解决问题的方法,至少我会这样做。

对于合并和合并数组,您可以尝试:

$array = array_merge($array1,$array2);

blade 中的示例:

@foreach(array_merge($array1,$array2) as $item)
    // ...
@endforeach

另一个例子:

@foreach($array1 as $key => $row)
    <li>
        <b>{{ $row['id'] }}</b>
        <p>{{ $array2[$key]->payment }}</p>
    </li>
@endforeach

相关链接:


&& 运算符(与)是逻辑运算符。

$a && $b And TRUE if both $a and $b are TRUE.