Laravel模型赢得';t按用户id查找消息


Laravel model won't find messages by user id

我正在开发一个使用Laravel编写的消息系统的网站。为了识别用户消息,messages表有一个to_user属性,它显然包含消息发送到的用户的id。然而,即使这个表中有很多示例消息,当我用这个属性搜索消息时,我的Message模型也不会返回任何结果。

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

/**
 * Get the users messages
 */
public function messages() {
    return $this->hasMany('App'Models'Message', 'to_user');
}

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

昨天晚上,当我洗澡的时候,我灵光一现(这绝对是解决问题所需的重要信息)。我确信我有解决方案,$currentUser->id是字符串,或者to_user属性出于某种原因必须将id作为字符串返回。不幸的是,事实并非如此。CCD_ 10表明两者都是整数。

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

谢谢!Roemer

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

用户模型

public function messages() {
    return $this->hasMany('App'Models'Message', 'to_user');
}

消息模型:

public function user() {
    return $this->belongsTo('App'Models'User', 'to_user');
}

然后用获取消息

 $messages = User::find(<your_user_id>)->messages()->get()

查看此处了解更多信息

您没有获取查询的结果。

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

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

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

尝试:

$messages = $currentUser->messages()->get();

$messages = Message::where('to_user', USER_ID)->get();

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

您在相关类中创建了"belongsTo"方法吗?