【问题标题】:How to access all subcategories' products如何访问所有子类别的产品
【发布时间】:2019-12-18 01:46:01
【问题描述】:

我有两张桌子:

第一个是具有列的类别:id、name、parent_category_id
第二个是具有列的产品:id、name、price、category_id

现在每个类别都可能有其他子类别,每个子类别也可能有子类别,那么如何使用 eloquent 检索该类别的所有产品并且所有产品都是子类别?

【问题讨论】:

  • 您当前的格式需要递归 SQL,这不是一个理想的方法。我建议研究不需要递归 SQL 的存储格式。我建议搜索“Laravel Eloquent Nested Set”,它会在内部使用树格式来存储分层数据。
  • 我也是,推荐使用嵌套集库。它以最简单、最漂亮的方式解决您的问题
  • @halfer 感谢您的提示。深入研究它,我发现这个包github.com/lazychaser/laravel-nestedset 这可能就是你的意思。它与 L5.8 兼容。为将来的需要添加了书签。

标签: laravel laravel-5


【解决方案1】:

您的类别文件不是关系文件,但对于您声明的用途是正确的。标准 SQL 是递归的。有很多免费软件使用 SQL 一词,但没有提供 SQL 的特性和功能。

  • 如果您使用其中之一,您将被卡住。找出适用于该非 SQL 软件的任何方法。
  • 根据定义,所有此类方法都是反关系的,因此是可怕的。没有什么“简单”或“漂亮”的。

如果你有正版 SQL:

  • 编写一个递归函数,在标量变量(单列)中为单个 product.category_id 生成树(您的文件描述类别层次结构)
  • 使用DISTINCT 消除重复项
  • 使用SELECT ... WHERE category_id IN ( FunctionName() )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多