如何在没有对话表和参与者表的情况下让我在laravel中进行对话的用户

时间:2018-12-05 12:31:52

标签: php laravel

请在下面有两个表,用户表和消息表

$table->increments('id');
$table->unsignedInteger('from');
$table->unsignedInteger('to');
$table->mediumText('text');
$table->boolean('read')->default(false);

以及用户类别中的这两个关系

public function sentMessages(){
    return $this->hasMany(Message::class, 'from');
}
public function receivedMessages(){
    return $this->hasMany(Message::class, 'to');
}

我只想让我与之交谈的用户。我该怎么办..即使使用原始sql

1 个答案:

答案 0 :(得分:0)

如果您只是用户可以做什么:

 $userId = 'id of user to get conversations for';
 User::whereHas('receivedMessages', function ($q) use ($id) {
      $q->where('from', $id);
 });

这将为您提供所有从给定ID的用户收到消息的用户。如果您希望获得也向该用户发送邮件的用户,可以执行以下操作:

 $userId = 'id of user to get conversations for';
 $collocutor = User::orWhereHas('receivedMessages', function ($q) use ($id) {
      $q->where('from', $id);
 })->orWhereHas('sentMessages', function ($q) use ($id) {
      $q->where('to', $id);
 });