php – 为什么belongsTo()返回null?
我有两个模型和两个表.带有数据库结构的第一个型号名称Inbox:
第二个模型名称是具有数据库结构的StudentData: 我将使用我的方法返回路由(‘/ sended’)所有消息以获取所需的消息: public function getMessages($message_type = "new") { $user_id = Auth::user()->id; $inbox = new Inbox(); $paginate = 3; switch ($message_type) { case 'sended': $messages = $inbox->where('sender',$user_id) ->where('trashed_in_sender',0) ->where('show_in_sender',0) ->orderBy('created_at','desc') ->paginate($paginate); break; default: return abort(404); break; } return $messages; } 我的模型收件箱中有方法: public function messageSender() { return $this->belongsTo("AppStudentData",'sender'); } public function messageRecipient() { return $this->belongsTo("AppStudentData",'recipient'); } 当我在视图中调用$message-> messageSender时,结果为NULL.为什么我无法使用student_datas表中的收件箱表中的发件人ID获取数据 解决方法
所以,我有几个问题….
1)您的User和StudentData模型究竟是如何交互的?有2个模型看起来似乎是1:1的关系,这有点奇怪吗? 2)我认为你的方向是错误的…如果你已经拥有用户模型,请尝试从那里获取发送的消息.我会举个例子. 假设您有一个用户模型和一个收件箱模型,其中有一个“发件人”和“收件人”,它们都具有用户模型的ID. public function messageSender() { return $this->belongsTo("AppUser",'sender'); } public function messageRecipient() { return $this->belongsTo("AppUser",'recipient'); } 但为什么不从另一个方向走?我们可以在User模型中编写关系 public function sentMessages() { return $this->hasMany("AppInbox",'sender'); } public function receivedMessages() { return $this->hasMany("AppInbox",'recipient'); } 现在,您只需使用即可获取所有已发送的消息(即用户为发件人的所有消息) $user->sentMessages 并对此进行操作.或者你甚至可以设置一个特殊的帮助关系(我的名字很糟糕,找到一个更好的…例如) public function unreadSentMessages() { return $this->hasMany("AppInbox",'sender') ->where('trashed_in_sender',0) ->where('show_in_sender',0) ->orderBy('created_at','desc'); } 并且可以将$user-> sentMessages用于他的所有消息,也可以将$user-> unreadSentMessages仅用于您需要的消息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |