今天,我只是在练习自己的技能而陷入困境。我只想使用特定的ID从数据库中获取数据,这些ID放在会话中作为数组。问题是,我找不到一种方法来获取包含这些ID的所有数据。 这是我的购物车结帐方法
public function checkout(){
$uniqid = session('products');
$post=Post::find($uniqid);
return view('pages.checkout')->with('post',$post);
}
我什么也没得到,即使我试图得到一些数据,但只有7个这样的数据,我只能得到一个字段。 这是会话产品数组
0 "15be4aa3b55f10"
1 "15be4814ceb2a0"
2 "15be4814ceb2a0"
3 "15be4aa3b55f10"
4 "15be4aa3b55f10"
5 "15be4aa3b55f10"
6 "15be4aa3b55f10"
7 "15be4aa3b55f10"
答案 0 :(得分:2)
您可以尝试以下方法:
public function checkout(){
$uniqid = session('products');
$products = Post::whereIn('unique_id', $uniqid)->get();
return view('pages.checkout')->with('products',$products);
}
where whereIn 方法采用字段名称和值数组
来自laravel docs:
whereIn方法验证给定数组中是否包含给定列的值
答案 1 :(得分:0)
find
查询返回单行数据。如果要获取多个数据,请使用all
查询:
$post = Post::all();
或者如果您想获取与$uniqid
具有相同ID的所有数据,请使用where
查询:
$post = Post::where('column_name', $uniqid)->get();
编辑
如果您的会话具有许多ID,则可能要循环查找与id
相同的$uniqid
的所有数据
public function checkout(){
$products = [];
foreach(session('products') as $session){
$post=Post::find($session->id);
$products[] = $post;
}
return view('pages.checkout')->with('products ',$products);
}
答案 2 :(得分:0)
您应该使用whereIn()方法来获取针对多个ID的记录。这样做
public function checkout(){
$uniqidsArray= session('products');
$post=DB::table('yourTableName')
->whereIn('id', $uniqIdsArray)
->get();
return view('pages.checkout')->with('post',$post);
}