【问题标题】:Eloquent ORM same table relationships in Laravel 5.2Laravel 5.2 中雄辩的 ORM 同表关系
【发布时间】:2016-04-08 09:56:58
【问题描述】:

假设我们有一个如下所示的水果表:

id|fruit
----------------
 1|apple
 2|pear
 3|orange
 4|lemon
 5|mandarin

并且我们希望将这些水果作为彼此的变体检索,没有任何层次结构,也没有另一个变体表(没有层次结构的 cmets->回复类型的东西)。

因此,例如,应该能够检索$orange=Fruit::find(3)->fruitVariants;。理想情况下,这会给我们所有相关的水果(柠檬、柑橘)。

逆向也应该是可能的$lemon=Fruit::find(4)->fruitVariants; 应该检索橙色和普通话。

它们应该都是彼此等效的变体,我不知道如何做到这一点。 fruit_fruit 表?有什么想法吗?

【问题讨论】:

    标签: php orm laravel-5 eloquent many-to-many


    【解决方案1】:

    你是对的,你需要一些表来存储many-to-many relationship
    这种关系是多对多的,因为每个水果可以有很多变体,每个变体可以适应很多水果。

    所以你需要这样的fruit_variants 表:

    +---------+----------+
    |fruit_id |variant_id|
    +---------+----------+
    |        3|         4|
    |        3|         5|
    |        4|         3|
    |        4|         5|
    |        5|         3|
    |        5|         4|
    +---------+----------+
    

    您还需要将此variants 方法添加到您的Fruit 模型中

    public function variants()
    {
        return $this->belongsToMany('Fruit', 'fruit_variants', 'fruit_id', 'variant_id');
    }
    

    【讨论】:

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