我有两个课程用户和消息,
我正在尝试从用户类中获取对用户消息的回复
在用户类
中public function replies()
{
return $this->messages->replies;
}
然而,这似乎不起作用所以我正在尝试hasManyThrough操作
public function replies()
{
return $this->hasManyThrough(Message::class,Message:class,'reply_id','user_id','id');
}
由于唯一的表格问题,这不起作用
执行此操作的最佳方法是什么?
我应该使用原始获取吗?
public function replies()
{
return Message::whereIn('reply_id', $this->messages->pluck('id'))->get()
}
请记住我可能还想要执行分页和订购功能
答案 0 :(得分:-1)
为什么在只有一对多的关系时才使用hasManyThrough()
?
在您的情况下我会做的是在User对象中使用$this->hasMany('\App\Models\Message')
。
然后在Message对象中使用$this->belongsTo('\App\Models\User')
然后,您可以通过User对象执行$user->messages->replies
https://laravel.com/docs/5.3/eloquent-relationships#one-to-many
示例强>
用户对象:
class User extends Model {
public function messages() {
return $this->hasMany('App\Models\Message');
}
}
Message对象:
class Message extends Model {
public function user() {
return $this->belongsTo('App\Models\User');
}
}
然后在某种控制器功能中,例如你可以这样做:
$user = User::with('messages')->findOrFail(1);
将使用与其关联的消息返回User对象。
那么你可以这样做:
$user->messages->replies