我有以下表格:
用户 - ID,用户名等。
对话 - id,私有等。
conversation_user - id,user_id,conversation_id
每个打开/启动对话的 conversation_user 表中有两条记录(如果对话是多用户,可能会更多)。 一个用户作为收件人/收件人,另一个用户作为发件人。假设: user_id = 1 , conversation_id = 1 , user_id = 2 , conversation_id = 1 。
如何选择我与之打开对话的所有用户/用户名。确切地说,所有参与者。
我认为我需要获得一个会话ID,我是参与者,然后对话中的其他用户进行反向查找。但到目前为止没有运气......这种反向查找是我被卡住的地方。 我正在玩Laravel 5.3和MySQL。
答案 0 :(得分:0)
首先,您需要在数据透视表has_started_conversation
上使用conversation_user
种布尔值。
如docs所述,您需要定义Conversation
和User
模型之间的关系。
用户
class User extends Model
{
public function conversations()
{
return $this->belongsToMany('App\Conversation')->withPivot('has_started_conversation');
}
}
会话
class Conversation extends Model
{
public function users()
{
return $this->belongsToMany('App\User')->withPivot('has_started_conversation');
}
}
然后
// get a users conversations
$conversations = \App\User::first()->conversations;
// select a single conversation, or maybe multiple with a for loop?
$important_conversation = $conversations->random();
// get the participants of that conversation
$participants = $important_conversation->users;