我不知道如何以正确的方式形成问题,如果存在这个问题的一些术语
我有一张城市表和城市之间的联系表:
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);
通过这种方法,例如,对于亚特兰大,它将返回纽约和马德里,但不会返回东京,我也希望返回东京。
答案 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.