简体   繁体   中英

Laravel Get All Rows From Different Ids

today i was just practicing my skills and got stuck. I just want to fetch data from the database using specific ids which i put inside my session as an array. The problem is, i cant find a way to fetch all the data that includes these ids. here's my cart checkout method

public function checkout(){
    $uniqid = session('products');
    $post=Post::find($uniqid);
    return view('pages.checkout')->with('post',$post);
  }

I am getting no data, even if i try to get something i only get one field when there's something like 7 of them. Here's the session products array

0   "15be4aa3b55f10"
1   "15be4814ceb2a0"
2   "15be4814ceb2a0"
3   "15be4aa3b55f10"
4   "15be4aa3b55f10"
5   "15be4aa3b55f10"
6   "15be4aa3b55f10"
7   "15be4aa3b55f10"

you may try this:

public function checkout(){
    $uniqid = session('products');

    $products = Post::whereIn('unique_id', $uniqid)->get();
    return view('pages.checkout')->with('products',$products);
 }

where whereIn method takes a field name and array of values

From laravel docs :

The whereIn method verifies that a given column's value is contained within the given array

The find query returns single row of data. If you want to fetch more than 1 data, use the all query:

$post = Post::all();

or if you want to get all data with the same id as your $uniqid , use the where query:

$post = Post::where('column_name', $uniqid)->get();

EDIT

IF your session has many id, you may want to loop and find all the data with the same id as your $uniqid

public function checkout(){
   $products = []; 
   foreach(session('products') as $session){
      $post=Post::find($session->id);
      $products[] = $post;
   }
   return view('pages.checkout')->with('products ',$products);
}

You should use whereIn() method to fetch records against multiple ids. do like this

  public function checkout(){
    $uniqidsArray= session('products');
    $post=DB::table('yourTableName')
                    ->whereIn('id', $uniqIdsArray)
                    ->get();
    return view('pages.checkout')->with('post',$post);
  }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM