Laravel 在同一型号上有许多相同的产品

Laravel 在同一型号上有许多相同的产品,laravel,eloquent,laravel-5.3,laravel-eloquent,Laravel,Eloquent,Laravel 5.3,Laravel Eloquent,我有两个类用户和消息 我试图从user类中获得对用户消息的回复 在用户类中 public function replies() { return $this->messages->replies; } 然而,这似乎不起作用,所以我正在尝试hasManyThrough操作 public function replies() { return $this->hasManyThrough(Message::class,Message:class,'reply_i

我有两个类用户和消息

我试图从user类中获得对用户消息的回复

在用户类中

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() 
}
请记住,我可能还想执行分页和排序功能

当hasManyThrough只是一对多关系时,为什么要使用它

在您的情况下,我要做的是在用户对象中使用$this->hasMany'\App\Models\Message'

然后在消息对象中使用$this->belongsTo'\App\Models\User'

然后,您可以从用户对象执行$User->messages->repress

范例

用户对象:

class User extends Model {

    public function messages() {
         return $this->hasMany('App\Models\Message');
    }
}
消息对象:

class Message extends Model {

    public function user() {
         return $this->belongsTo('App\Models\User');
    }
}
然后,在某种控制器功能中,例如,您可以执行以下操作:

$user = User::with('messages')->findOrFail(1);
它将返回用户对象及其关联的消息

那么你可以做:

$user->messages->replies

我不认为你是对的,我正试图让其他用户回复他的信息。我想通过使用hasmanythrough,我会使用reply_to作为其自身的外键,但如果没有别名,我会遇到问题您想从用户模型中获取所有消息的所有回复吗?@aimme没错,使用“with”如何?