Laravel 拉威尔私人信息系统。获取所有相关用户的问题
我指的是这条线 我创建了表,并在模型“Message”和“User”中建立了关系。 现在我可以通过这个命令获取我发送的消息列表 user::find($myid)->sent_messages()->get() 我的问题是 我们如何获取已向我发送消息的用户列表(登录用户)? 我的意思是在消息表中,“发件人”可以登录用户(1)或“收件人”可以登录用户(1)。我想获得与(登录用户)聊天的其他用户的列表 希望你能理解我的问题并给予帮助。我是新来的拉雷维尔,并试图学习的东西和最佳做法。如果您建议使用github中已有的任何消息传递系统。我发现有一个名字叫“拉拉维尔信使”,但不适合我Laravel 拉威尔私人信息系统。获取所有相关用户的问题,laravel,eloquent,private,messaging,Laravel,Eloquent,Private,Messaging,我指的是这条线 我创建了表,并在模型“Message”和“User”中建立了关系。 现在我可以通过这个命令获取我发送的消息列表 user::find($myid)->sent_messages()->get() 我的问题是 我们如何获取已向我发送消息的用户列表(登录用户)? 我的意思是在消息表中,“发件人”可以登录用户(1)或“收件人”可以登录用户(1)。我想获得与(登录用户)聊天的其他用户的列表 希望你能理解我的问题并给予帮助。我是新来的拉雷维尔,并试图学习的东西和最佳做法。如果您建议使用g
非常感谢您的建议和回答。谢谢可能不使用表格用户信息(只需将其删除),您只需将表格信息修改为以下形式:
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);(您也可以使用eloquentunion
来“合并”这两种类型的查询)。在上述解决方案中,当某些用户删除消息时,您也不会遇到任何问题。然后,您可以添加两个布尔列“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);是的,谢谢你的主意。它澄清了我的概念。谢谢:)