雄辩的ORM |试图了解Laravel 5.6中的关系

时间:2018-02-16 09:53:38

标签: php database laravel orm eloquent

#1

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

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

项目计划

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

Scheme

问题

我做了什么:

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

我需要做什么:

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

    添加新产品时,默认情况下应该创建1个ProductVariant 数据(例如华硕(品牌),ROG(产品),笔记本(类型),Zephyrus(变体))。

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

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

  3. 所以,当我创建产品时(例如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 for Product,ProductVariant,ProductType。

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

1 个答案:

答案 0 :(得分:0)

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

请查看on page 253 of The Ruby Programming Language和此official documentation

连接正确的关系

根据您的示例,我认为您需要为表descriptionProduct添加其他ProductVariant字段,以存储有关产品或产品的具体变体的简短信息。

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

  • ID
  • product_id - 属于产品
  • product_variant_id - 属于ProductVariant(如果该产品的所有变体,则为NULL)
  • PHOTO_URL

为了获得产品的具体变体的所有照片,您可以获得

  • 该产品的所有照片均与变体无关 (product_variant_id IS NULL
  • 以及该变体的所有照片