首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel模型不会根据用户id查找消息

Laravel模型不会根据用户id查找消息
EN

Stack Overflow用户
提问于 2015-11-26 20:26:20
回答 4查看 334关注 0票数 0

我在一个用Laravel写的消息系统的网站上工作。为了标识用户,messages表有一个to_user属性,该属性显然保存着消息要发送到的用户的id。但是,即使此表中有大量示例消息,当我按此属性搜索消息时,我的Message模型也不会返回任何结果。

我试过几种方法。首先,$messages = Message::where('to_user', USER_ID);,这将导致一个空数组(除了标准的雄辩内容,没有来自表的实际结果)。接下来,我尝试了一种更漂亮的方法。在我的User模型中,我添加了这样一个奇特的关系:

代码语言:javascript
复制
/**
 * Get the users messages
 */
public function messages() {
    return $this->hasMany('App\Models\Message', 'to_user');
}

不幸的是,$messages = $currentUser->messages()返回的结果与我第一次尝试时返回的结果相同。

昨天晚上,当我洗澡的时候,我灵光乍现(这绝对是解决问题所需的基本信息)。我确信我已经找到了解决方案,要么$currentUser->id是一个字符串,要么由于某种原因,to_user属性必须将id作为字符串返回。不幸的是,事实并非如此。var_dump显示两者都是整数。

有什么想法吗?我真的很感激。

谢谢!罗默

EN

回答 4

Stack Overflow用户

发布于 2015-11-26 20:34:11

这是一个标准的一对多关系,处理这种情况的正确方法是在两个模型中创建关系:

用户模型

代码语言:javascript
复制
public function messages() {
    return $this->hasMany('App\Models\Message', 'to_user');
}

消息模型:

代码语言:javascript
复制
public function user() {
    return $this->belongsTo('App\Models\User', 'to_user');
}

然后通过以下命令获取消息:

代码语言:javascript
复制
 $messages = User::find(<your_user_id>)->messages()->get()

有关更多信息,请查看here

票数 2
EN

Stack Overflow用户

发布于 2015-11-26 20:33:57

您没有获取查询的结果。

$messages = Message::where('to_user', USER_ID);这不会返回任何内容

$messages = Message::where('to_user', USER_ID)->get();这将返回一组消息

票数 0
EN

Stack Overflow用户

发布于 2015-11-26 20:34:37

您的message方法返回HasMany类,但它还没有返回结果集。

尝试:

代码语言:javascript
复制
$messages = $currentUser->messages()->get();

代码语言:javascript
复制
$messages = Message::where('to_user', USER_ID)->get();

我认为你的问题是你没有完成查询构建器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33938705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档