【问题标题】:Multiple variable pass in one Foreach loop in laravel bladelaravel 刀片中的一个 Foreach 循环中的多个变量传递
【发布时间】:2019-05-14 01:27:16
【问题描述】:

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

$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 循环中显示这两个变量吗?

【问题讨论】:

  • 看起来您正在加入 S_users 表,因此您可以在 $cn 变量中的 $data 变量中获得所有可用数据。在这种情况下,您只需要 foreach 超过 $cn
  • 对不起我的错误..$data = S_core_Country::all();
  • 您仍在查询中加入,您应该可以在 $cn 变量中访问您要查找的任何数据。如果你想做一些事情,比如输出国家名称,然后是其中的所有地址,你只需要查看位置,只输出一个新的国家。
  • 你能举个例子说明你想用这个产生的输出吗?

标签: php laravel laravel-5.5 laravel-blade


【解决方案1】:

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

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

刀片示例:

@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 如果 $a 和 $b 都为 TRUE,则为 TRUE。

【讨论】:

    【解决方案2】:

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

    为了充分利用 Laravel 框架,我要做的是使用 Eloquent ORM 在用户、地址和国家/地区之间建立关系。然后在您的刀片模板中,您应该能够执行以下操作:

    如果 $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 关系将是这里的方法,至少我会这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-21
      • 2020-08-21
      • 1970-01-01
      • 2022-11-02
      • 2018-04-04
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      相关资源
      最近更新 更多