拉维尔(Laravel)雄辩的自我与许多人的关系都没有严格的秩序



我不知道如何以正确的方式形成问题,并且是否存在此问题的某种术语。
我有一个城市和城市之间的联系表:

city1_name   city2_name
Atlanta      New York
Moscow       Madrid
Atlanta      Madrid
Moscow       Tokyo
Tokyo        Atlanta
etc          etc

因此,连接不可重复并且是对称的,如果我想获得一个城市的所有联系,我就无法做到这一点:

$this->belongsToMany(self::class, 'city_city', 'city1_name', 'city2_name);

以这种方法,例如,亚特兰大将返回纽约和马德里,但不会返回东京,我也希望返回。

毕竟我已经提出了这个解决方案:

protected function connections1(){
    return $this->belongsToMany(self::class, 'city_city', 'city1_id', 'city2_id');
}
protected function connections2(){
    return $this->belongsToMany(self::class, 'city_city', 'city2_id', 'city1_id');
}
public function getConnectionsAttribute(){
    $conn1 = $this->connections1;
     foreach ($this->connections2 as $conn){
         $conn1->push($conn);
     }
    return ($conn1);
}

$city = City::find('Atlanta');
$city->connections; //Gives respective objects for New York,Madrid and Tokyo.

最新更新