【问题标题】:Eloquent ORM | Trying to understand relations in Laravel 5.6雄辩的 ORM |试图理解 Laravel 5.6 中的关系
【发布时间】:2023-03-10 11:43:01
【问题描述】:

堆栈溢出

我是 PHP 和 Laravel 的新手。我通过创建电子商务商店系统来学习它。 所以问题是关于 Eloquent ORM 和系统中的关系。

我有品牌目录,其中包含属于品牌的产品。比我想创建包含产品、类型、变体和照片的目录。


项目方案

在下面的方案中,您可以看到现在完成的关系和数据库迁移。

问题

我做了什么:

  • 模型关系;
  • 品牌控制器(带有 slug 的简单 CRUD);

我需要做什么:

  1. 创建添加产品逻辑(仅 1 个 ProductVariant)。

    添加新产品时,默认情况下,它应该创建 1 个 ProductVariant 数据(例如 ASUS(品牌)、ROG(产品)、Notebook(类型)、Zephyrus(变体))。

  2. 创建添加产品逻辑(超过 1 个 ProductVariant)。

    添加新产品时,但产品有 >1 个 ProductVariant(例如 Intel(品牌)、Core i7(产品)、CPU(类型)和 Variants 7700、7700K、7600)。

所以,当我创建产品时(例如 product/add.blade.php 视图)。 以示例形式:

<form action="{{ route('name of add route) }} method="post">

    here goes brand select with options (foreach brands as brand)

    than goes type select with options (foreach types as type)

    than goes inputs for Product (name, country, etc.)

    than goes inputs for ProductVariant (name, description, price, etc.)

    than goes inputs for another ProductVariant.

</form>

问题

我是否正确处理了所有关系? 我应该如何将这些数据存储在 Controller 的 DB 中?

另外,我有 Product、ProductVariant、ProductType 的控制器。


如果有人可以帮助我,我将非常感激

【问题讨论】:

    标签: php database laravel orm eloquent


    【解决方案1】:

    这里写完整代码或描述如何在laravel中保存关系数据太长了。

    请看official documentation和这个small tutorial

    建立正确的关系

    根据您的示例,我认为您需要为表 ProductProductVariant 提供额外的 description 字段,以存储有关产品或产品具体变体的简短信息。

    另外,我认为会有很多产品照片,它们独立于产品变体(对于该产品的所有变体都是相同的)。要避免每个变体的照片重复,您可以更改 ProductPhotos 表结构:

    • 身份证
    • product_id - 属于产品
    • product_variant_id - 属于 ProductVariant(如果它适用于该产品的所有变体,则为 NULL)
    • 照片网址

    因此,要获取产品具体变体的所有照片,您可以获得

    • 该产品的所有与变体无关的照片 (product_variant_id IS NULL)
    • 加上该变体的所有照片

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 2016-02-26
      • 2016-08-27
      • 2018-11-14
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多