【问题标题】:show all session with diffrent name and one suffix in php在 php 中显示所有具有不同名称和一个后缀的会话
【发布时间】:2020-03-22 00:42:48
【问题描述】:

我想通过 laravel 创建一个商店网站。

我想创建购物车页面和购物车页面,显示用户想要购买的所有产品。 我为用户想要购买的每个产品创建一个会话。

我在 laravel 中有这样的会话


$_SESSION[cart_133] = [

'product' => 'test1',
'quantity' => '3',
'price' => '30'

];



$_SESSION[cart_30] = [

'product' => 'test2',
'quantity' => '1',
'price' => '50'

];


$_SESSION[cart_65] = [

'product' => 'test3',
'quantity' => '10',
'price' => '653',

];

我想像这样展示他们

<p>test1</p>
<p>3</p>
<p>30</p>

<hr>

<p>test2</p>
<p>1</p>
<p>50</p>

<hr>


<p>test3</p>
<p>10</p>
<p>653</p>

<hr>
<hr>


<p>all price 733</p>


【问题讨论】:

  • 您必须将关系添加到模型中,然后使用产品获取类别
  • 我最近学习了 laravel,但我不知道该怎么做。如果你能帮助我
  • First:你的控制器有$cats,但你在foreach中使用$cat第二:您正在按类别对产品进行分组。相反,您只获取类别并使用产品的动态属性(a.k.a 关系)遍历它们以获取属于该特定类别的所有产品。 第三:参考文档laravel.com/docs/6.x/eloquent-relationships

标签: php arrays laravel session


【解决方案1】:

您可以使用调用所有会话和使用 substr 函数来限制一个后缀。

你可以用这个

$x = [];
foreach(Session::all() as $name => $val){
  if(substr($name , 0 , 5 ) == "cart_"){
     $x[$name] = $val;
  }
}
echo '<pre>';
print_r($x;);

【讨论】:

    【解决方案2】:

    如果你想用 Laravel 的方式来做,你必须define relations

    类别模型(每个类别可能有一些产品)

    public function products()
    {
        return $this->hasMany('App\Product');
    }
    

    产品型号(每个产品属于某个类别)

    public function category()
    {
        return $this->belongsTo('App\Category');
    }
    

    那么当你想用他们的产品获取分类时,你可以使用Eager Loading

    控制器

    $categories = Category::with('products')->get();
    

    查看

    @foreach ($categories as $cat)
        @foreach ($cat->products as $product)
           <!-- product data -->
        @endforeach
    @endforeach
    

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多