我在一个用Laravel写的消息系统的网站上工作。为了标识用户,messages表有一个to_user属性,该属性显然保存着消息要发送到的用户的id。但是,即使此表中有大量示例消息,当我按此属性搜索消息时,我的Message模型也不会返回任何结果。
我试过几种方法。首先,$messages = Message::where('to_user', USER_ID);,这将导致一个空数组(除了标准的雄辩内容,没有来自表的实际结果)。接下来,我尝试了一种更漂亮的方法。在我的User模型中,我添加了这样一个奇特的关系:
/**
* 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显示两者都是整数。
有什么想法吗?我真的很感激。
谢谢!罗默
发布于 2015-11-26 20:34:11
这是一个标准的一对多关系,处理这种情况的正确方法是在两个模型中创建关系:
用户模型
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()有关更多信息,请查看here
发布于 2015-11-26 20:33:57
您没有获取查询的结果。
$messages = Message::where('to_user', USER_ID);这不会返回任何内容
$messages = Message::where('to_user', USER_ID)->get();这将返回一组消息
发布于 2015-11-26 20:34:37
您的message方法返回HasMany类,但它还没有返回结果集。
尝试:
$messages = $currentUser->messages()->get();或
$messages = Message::where('to_user', USER_ID)->get();我认为你的问题是你没有完成查询构建器。
https://stackoverflow.com/questions/33938705
复制相似问题