Как выбрать и получить данные из нескольких таблиц (Laravel)

#laravel #eloquent

#laravel #красноречивый

Вопрос:

Я хочу извлекать данные из нескольких строк через Laravel Eloquont:

Вот что я пробовал:

         $currUser = Auth::User();
        ### search
        
        
        $output_product = $currUser->table('products')
            ->join('product_variants', 'products.product_id', '=', 'product_variants.product_id')
            ->join('product_images', 'product_vairants.id', '=', 'product_images.vairant_id')
            ->select('products.title', 'products.description', 'product_variants.price', 'product_variants.quantity', 'product_images.imgurl')->where('products.product_id', $product_id)
            ->get();        
        return $output_product;
                        
        }
  

Но эта функция ничего не возвращает,

я добавляю сюда запрос, который работает нормально:
$output_product = $currUser->products()->where('product_id', $product_id)->first();

Спасибо

Комментарии:

1. опечатки при вашем втором объединении (vairant)?

Ответ №1:

С помощью конструктора запросов вы можете сделать это следующим образом:

 $output_product = DB::table('products')
->select('products.title', 'products.description', 'product_variants.price','product_variants.quantity', 'product_images.imgurl')
->join('product_variants', 'products.product_id', '=', 'product_variants.product_id')
->join('product_images', 'product_vairants.id', '=', 'product_images.vairant_id')
->where('products.product_id', $product_id)
->get();
return $output_product;
  

И если вы хотите сделать с Eloquont.вам необходимо определить все взаимосвязи в соответствующих классах модели

Ответ №2:

Вы должны сделать это следующим образом;

DB::table(«)….

создайте соединение с таблицей пользователя и, в конце концов, и a, где идентификатор пользователя равен $ currUser-> id