Задать вопрос
ddimonn8080
@ddimonn8080

Как правильно сделать такой запрос средствами laravel?

Здравствуйте, помогите разобраться.
Сделал запрос к базе данных с помощью DB::select()
часть кода:
class ProductsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $products = Products::all();
        $categories = DB::table('categories')->get();
        //$categoriesRelationship = DB::table('categories_relationship')->get();
        $categoriesRelationship = DB::select("SELECT
                                            categories.category_filter_by AS 'catFilterBy',
                                            products.id AS 'productID'
                                          FROM
                                            categories, products, categories_relationship
                                          WHERE
                                            categories.category_id = categories_relationship.category_id
                                          AND
                                            products.id = categories_relationship.object_id"
                                        );

        return response()->json([
            'productsList' => $products,
            'categories' => $categories,
            'categoriesRelationship' => $categoriesRelationship,
        ]);
    }
}


получение $categoriesRelationship сделал правильно?

Можно ли как-то по-другому сделать такой запрос с помощью методов laravel?

Спасибо
  • Вопрос задан
  • 159 просмотров
Подписаться 2 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
dlnsk
@dlnsk
ПК Партнер 01.01 -> ПК Поиск -> IBM PC
DB::table('products')
   ->select(['products.id', 'categories.category_filter_by'])
   ->join('categories_relationship', 'products.id', '=', 'categories_relationship.object_id')
   ->join('categories', 'categories.category_id', '=', 'categories_relationship.category_id')
   ->get();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы