Laravel Получить все строки с разных идентификаторов - PullRequest
0 голосов
/ 09 ноября 2018

сегодня я просто практиковал свои навыки и застрял.Я просто хочу получить данные из базы данных, используя конкретные идентификаторы, которые я помещаю в мою сессию в виде массива.Проблема в том, что я не могу найти способ получить все данные, которые включают эти идентификаторы.вот мой метод проверки корзины

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"

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Вы можете попробовать это:

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

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

где , где метод принимает имя поля и массив значений

Из Laravel Документы :

Метод whereIn проверяет, содержится ли значение данного столбца в указанном массиве

0 голосов
/ 09 ноября 2018

Вы должны использовать метод whereIn () для извлечения записей по нескольким идентификаторам.делай так

  public function checkout(){
    $uniqidsArray= session('products');
    $post=DB::table('yourTableName')
                    ->whereIn('id', $uniqIdsArray)
                    ->get();
    return view('pages.checkout')->with('post',$post);
  }
0 голосов
/ 09 ноября 2018

Запрос find возвращает одну строку данных. Если вы хотите получить более 1 данных, используйте запрос all:

$post = Post::all();

или если вы хотите получить все данные с тем же идентификатором, что и ваш $uniqid, используйте запрос where:

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

EDIT

ЕСЛИ у вашей сессии много идентификаторов, вы можете зациклить и найти все данные с тем же 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...