Laravel雄辩地说自己很多很多关系,没有严格的命令

时间:2018-04-25 23:25:36

标签: laravel orm eloquent relationship

我不知道如何以正确的方式形成问题,如果存在这个问题的一些术语 我有一张城市表和城市之间的联系表:

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);

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

1 个答案:

答案 0 :(得分:0)

毕竟我已经解决了这个问题:

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.