繁体   English   中英

Laravel 5.2中雄辩的ORM相同表关系

[英]Eloquent ORM same table relationships in Laravel 5.2

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

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

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

因此,例如,一个人应该能够检索$orange=Fruit::find(3)->fruitVariants; 理想情况下,这将为我们提供所有相关的水果(柠檬,普通话)。

倒数也应该是可能的$lemon=Fruit::find(4)->fruitVariants; 应该取回橘子和橘子。

它们都应该是彼此等效的变体,我不知道该怎么做。 一个fruit_fruit桌? 有任何想法吗?

没错,您需要一些表来存储多对多关系
这种关系是多对多的,因为每个水果可以有很多变体,并且每个变体都可以适合许多水果。

因此,您需要这样的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');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM