Как забрать детей у родителя в приложении электронной коммерции

На самом деле я пытаюсь создать приложение электронной коммерции в Laravel и иметь следующий макет базы данных...

СТОЛОВЫЕ ПРОДУКТЫ: product_id ПК, материал, описание, идентификатор_бренда, id_категории,

ТАБЛИЦА PRODUCTS_CHILDREN: я бы, ску, цвет, цена, размер, количество, product_id (FK для таблицы продуктов)

Сейчас я новичок в Laravel, но я думал создать приложение для электронной коммерции и просто хотел решить эту проблему, прежде чем заходить слишком далеко.

Мой вопрос: есть ли способ при отображении продуктов также получать дочерние продукты?

Мой мыслительный процесс был таким:

Товары -> получить( product_id, $product_id ) -> getChildren( product_id, product_id );

Я знаю, что синтаксис неверен, мне просто интересно, было ли это возможным решением в Laravel - путем цепочки запросов (как я полагаю, это характерно для фреймворка Laravel).

Я думаю, что я спрашиваю, как будет выглядеть синтаксис блейда при отображении данных?

Судя по тому, что я видел в учебниках, кажется, что это сработает, но я просто хотел подтвердить. Спасибо за любую помощь!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, это сработает, если вы настроите отношения, следуя документация.

Например, в вашем примере у вас будет две модели: одна для таблицы products и другая для таблицы products_children (я бы назвал их: Товар и Вариант соответственно).

Между ними у вас будет отношение 1:Н (у одного товара может быть много вариантов, один вариант принадлежит одному и только одному товару).

Таким образом, вы можете смоделировать отношение следующим образом: Модель: Продукт

class Product
{
    // Other methods/properties...

    public function variants()
    {
        return $this->hasMany(Variant::class);
    }
}

Модель: Вариант

class Variant
{
    // This is needed, otherwise Laravel would search for a
    // table called as the pluralized model name's (eg: variants)
    protected $table = 'products_children';

    // Other methods/properties...

    public function product()
    {
        return $this->belongsTo(Product::class, 'products_children');
    }
}

После того, как вы настроите отношения таким образом, вы можете связать методы, такие как ваш пример:

// Assuming $id is the variable holding the product id you want to retrive
$product = Product::find($id);
$variants = $product->variants;

// You can now access the main Product properties, but you can also
// iterate through each Variant entity linked to that product.

В зависимости от варианта использования запроса последний запрос может быть не оптимальным способом его выполнения. Иногда вам приходится с нетерпением загружать отношение для всех объектов, которые вы запрашиваете. Если вы хотите более подробно изучить эту тему, обратитесь к официальной документации.

Отказ от ответственности: Код, который я написал, это просто PoC, и он не тестировался. Он был написан, чтобы дать краткий обзор того, насколько просто настроить и использовать отношения между моделями.

Другие вопросы по теме