Laravel belongsToMany Relationship issue

问题描述:

我有另一个问题。我有一个国家型号:Laravel belongsToMany Relationship issue

protected $fillable = [ 
    'code', 'latitude', 'longitude', 'currency_id', 'timezone', 'dam_date', 'status', 
]; 

public function neighbors() { 

    return $this->belongsToMany('App\Models\Country', 'country_country_relation', 'country_id_1', 'country_id_2'); 

} 

我想显示某个国家的邻居。不幸的是,邻居()只能在一个方向上工作。例如:如果我将奥地利添加为德国的邻国,那么当我看到德国的网页时,我会看到奥地利,但是当我看到奥地利网页时,我没有找到德国作为邻居。 我应该改变什么才能使这件事成为可能?

你在问什么是表格自我引用的多关系。在你的情况下,问题是你要在数据透视表中保存一个从id到另一个的id。所以它只能以这种方式检索。只有一个关系,你有一个关键顺序问题能够以两种方式获取它们。

看一看这个(你有2种方法最终触发关系都路):Laravel Many to many self referencing table only works one way

更好的解决方案在这里:https://github.com/laravel/framework/issues/441

+0

做ü意味着我应该使用两种功能不断变化的字段顺序? –

+0

这两种方法是一种选择。在我的回答中,我更喜欢github问题链接上的最后一个答案(来自marco-solaire)。这个想法是使用一种关系方法,但是当你添加一个国家neightbor时,你的需求也是相同的。因此,如果您将德国添加为法国邻国,您需要添加法国作为德国邻国。他所做的是创建一种方法来完成这种添加和删除关系的方法。阅读它很简单,你会看到;-) – Mushr00m

+0

一个好的。感谢您的答案,我会考虑哪个选项对我更​​好。 –