Php 拉雷维尔:当有多个项目时,我只从我的表中得到一个项目。我如何获取所有这些数据并将其输出?
我正在使用会话创建基本购物车。会话中有多个ID,范围为1-3 当我使用foreach输出数据时,它只输出表中的第一项。我希望所有相关的项目出现。我该怎么做呢 这是我的控制器的索引函数:Php 拉雷维尔:当有多个项目时,我只从我的表中得到一个项目。我如何获取所有这些数据并将其输出?,php,database,laravel,session,Php,Database,Laravel,Session,我正在使用会话创建基本购物车。会话中有多个ID,范围为1-3 当我使用foreach输出数据时,它只输出表中的第一项。我希望所有相关的项目出现。我该怎么做呢 这是我的控制器的索引函数: public function index() { session_start(); $cartData = implode(',', $_SESSION['cart']); $cartProducts = Product::where('id',$cartData)->get();
public function index()
{
session_start();
$cartData = implode(',', $_SESSION['cart']);
$cartProducts = Product::where('id',$cartData)->get();
return view('basket',['cartProducts'=>$cartProducts ],['cartData' =>$cartData] );
}
@foreach($cartProducts as $cartProduct)
<p>{{$cartProduct->name}}</p>
<p>{{$cartProduct->size}}</p>
<p>{{$cartProduct->price}}</p>
@endforeach
"1,1,3"
Original
small
8
这是我在购物车页面上的输出:
public function index()
{
session_start();
$cartData = implode(',', $_SESSION['cart']);
$cartProducts = Product::where('id',$cartData)->get();
return view('basket',['cartProducts'=>$cartProducts ],['cartData' =>$cartData] );
}
@foreach($cartProducts as $cartProduct)
<p>{{$cartProduct->name}}</p>
<p>{{$cartProduct->size}}</p>
<p>{{$cartProduct->price}}</p>
@endforeach
"1,1,3"
Original
small
8
最后得出实际输出:
public function index()
{
session_start();
$cartData = implode(',', $_SESSION['cart']);
$cartProducts = Product::where('id',$cartData)->get();
return view('basket',['cartProducts'=>$cartProducts ],['cartData' =>$cartData] );
}
@foreach($cartProducts as $cartProduct)
<p>{{$cartProduct->name}}</p>
<p>{{$cartProduct->size}}</p>
<p>{{$cartProduct->price}}</p>
@endforeach
"1,1,3"
Original
small
8
你只是在使用where,这对你想要实现的目标没有帮助 您应该使用where(相当于sql中的where()),而不使用内爆(直接使用数组) 这将解决您的问题。您有两个问题:
其中
仅查找单个值,其中id='1,1,3'
,它可能只与1
的id匹配。要修复它,请传入实际数组,并使用,其中:
Product::whereIn('id', $_SESSION['cart'])->get();
这会将查询更改为其中id位于(1,1,3)
谢谢!这已经解决了:)不要使用$\u SESSION
和SESSION\u start
,您可以使用SESSION
facade/helper来执行此操作。。。你没有按你应该的那样使用Laravel,小心你会养成坏习惯。。。