Laravel 5 hasMany отношения на двух столбцах

Возможно ли иметь отношение hasMany на двух столбцах?

Моя таблица имеет два столбца: user_id и related_user_id .

Я хочу, чтобы мое отношение соответствовало любому из столбцов.

В моей модели у меня есть

 public function userRelations() { return $this->hasMany('App\UserRelation'); } 

select * from user_relations where user_relations.user_id in ('17', '18') запрос: select * from user_relations where user_relations.user_id in ('17', '18') .

Мне нужно выполнить запрос:

 select * from user_relations where user_relations.user_id = 17 OR user_relations.related_user_id = 17 

РЕДАКТИРОВАТЬ:

Я использую нетерпеливую загрузку, и я думаю, что это повлияет на то, как она будет работать.

 $cause = Cause::with('donations.user.userRelations')->where('active', '=', 1)->first(); 

Related of "Laravel 5 hasMany отношения на двух столбцах"

Я не думаю, что можно сделать именно то, что вы просите.

Я думаю, вы должны относиться к ним как к отдельным отношениям, а затем создать новый метод для модели, чтобы получить коллекцию обоих.

 public function userRelations() { return $this->hasMany('App\UserRelation'); } public function relatedUserRelations() { return $this->hasMany('App\UserRelation', 'related_user_id'); } public function allUserRelations() { return $this->userRelations->merge($this->relatedUserRelations); } 

Таким образом, вы по-прежнему получаете выгоду от надежного кэширования загрузки и отношения к модели.

 $cause = Cause::with('donations.user.userRelations', 'donations.user.relatedUserRelations') ->where('active', 1)->first(); $userRelations = $cause->donations[0]->user->allUserRelations();