我知道有类似的问题,但我找不到答案。
我有两张桌子
users:
id
name
chats:
id
user_id
friend_id
我需要从聊天模型中获取friends
。
所以,如果Auth::id() === chats.user_id
我需要一个有friend_id的用户为fk
我正在尝试这样的事情,但没有效果
public function userOne() {
return $this->belongsTo('App\Models\User', 'user_id');
}
public function userTwo() {
return $this->belongsTo('App\Models\User', 'friend_id');
}
public function friend() {
if ($this->userOne()->first()->id === Auth::user()->id) {
return $this->userTwo();
}
return $this->userOne();
}
所以,基本上我需要聊天模型中的条件来检查id
是不是我的,然后返回friend
或不同的关系?
答案 0 :(得分:0)
看看你在做什么。让我们拥有 id = 1 的用户。然后,当您调用方法 $ user-> userOne()时,会选择聊天表中的所有列,其中 user_id = 1 。当您拨打 $ user-> userTwo()时,则会从聊天表中删除所有 friend_id = 1 。 现在我们调用将要发生的 $ user-> friend()
if ($user->userOne()->first()->id === Auth::user()->id) {
return $this->userTwo();
}
即。
if (id of our user == 1) {
then return all columns where friend_id = 1
}
你需要那个
if ($this->userOne()->first()->user_id === Auth::user()->id) {
return $this->userOne()->first()->friend_id;
}
答案 1 :(得分:0)
朋友可以是用户的方法
在您的朋友模型中添加
public function friend()
{
return $this->hasMany('App\Friend');
}