Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 拉威尔私人信息系统。获取所有相关用户的问题_Laravel_Eloquent_Private_Messaging - Fatal编程技术网

Laravel 拉威尔私人信息系统。获取所有相关用户的问题

Laravel 拉威尔私人信息系统。获取所有相关用户的问题,laravel,eloquent,private,messaging,Laravel,Eloquent,Private,Messaging,我指的是这条线 我创建了表,并在模型“Message”和“User”中建立了关系。 现在我可以通过这个命令获取我发送的消息列表 user::find($myid)->sent_messages()->get() 我的问题是 我们如何获取已向我发送消息的用户列表(登录用户)? 我的意思是在消息表中,“发件人”可以登录用户(1)或“收件人”可以登录用户(1)。我想获得与(登录用户)聊天的其他用户的列表 希望你能理解我的问题并给予帮助。我是新来的拉雷维尔,并试图学习的东西和最佳做法。如果您建议使用g

我指的是这条线

我创建了表,并在模型“Message”和“User”中建立了关系。 现在我可以通过这个命令获取我发送的消息列表 user::find($myid)->sent_messages()->get()

我的问题是

我们如何获取已向我发送消息的用户列表(登录用户)? 我的意思是在消息表中,“发件人”可以登录用户(1)或“收件人”可以登录用户(1)。我想获得与(登录用户)聊天的其他用户的列表

希望你能理解我的问题并给予帮助。我是新来的拉雷维尔,并试图学习的东西和最佳做法。如果您建议使用github中已有的任何消息传递系统。我发现有一个名字叫“拉拉维尔信使”,但不适合我


非常感谢您的建议和回答。谢谢

可能不使用表格用户信息(只需将其删除),您只需将表格信息修改为以下形式:

Messages: id | from_user_id | to_user_id | content
然后您可以进行查询:

$received = Messges::where('to_user_id','=',my_user_id);
$send = Messges::where('from_user_id','=',my_user_id);
$result = $received->union($send)->get();

(好处:您还可以添加列
replay\u from\u message\u id
(第一条消息为null)以保存消息的后向序列(线程)。然后您还可以添加列
first\u message\u id
,以简化获取线程的查询)

查询$result=Messges::where('to\u user\u id','=',my\u user\u id');将返回消息集合,其中“to_user_id”=我的id对吗?这意味着有人给我发的信息,对吗?如果第一条信息就是我发给某人的那条呢。同样的查询在那里也会起作用吗?谢谢如果您想发送给某人的消息,那么只需使用:$result=mesges::where('from_user_id','=',my_user_id);(您也可以使用eloquent
union
来“合并”这两种类型的查询)。在上述解决方案中,当某些用户删除消息时,您也不会遇到任何问题。然后,您可以添加两个布尔列“deleted_by_sender”和“deleted_by_receiver”,如果每一个都为true,那么您可以删除行。从用户模型公共函数messages()中获取这样的消息怎么样({return$this->hasMany(Message::class,'to');}公共函数sent_messages(){return$this->hasMany(Message::class,'from');}然后在控制器中执行如下操作$currentUser=Auth::user()->id$users1=User::find($currentUser)->messages()->get()$users2=User::find($currentUser)->sent_messages()->get()$AllUsers=$users1->merge($users2);是的,谢谢你的主意。它澄清了我的概念。谢谢:)