如何在Laravel 5.2中使用paginate与关系?

问题描述:

I am trying to use paginate while selecting data from database by using relationships. I have three tables namely, users, contacts and contact_messages with models User, Contact, ContactMessage respectively.

I am trying to fetch all messages of a particular user by using the following method :

public function listMessage($user_id){
        $user1 = User::find($user_id);
        $messages = $user1->contact_messages;
        return View::make('message.listmessage')
        ->with('user_id', $user_id)
        ->with('messages', $messages);
    }

By this method I am getting all messages, but I couldn't paginate $messages . How can I paginate $messages? Can anyone help?

My models and relationships are given below :

class User extends Authenticatable
{
    public function contacts()
    {
        return $this->hasMany('App\Contact');
    }
    public function contact_messages()
    {
        return $this->hasManyThrough('App\ContactMessage', 'App\Contact');
    }
}

and Contact Model is

class Contact extends Model
{
    public function user(){
        return $this->belongsTo('App\User');
    }

    public function messages()
    {
        return $this->hasMany('App\ContactMessage');
    }
}

finally ContactMessage model is

class ContactMessage extends Model
{
    public function contact(){
        return $this->belongsTo('App\Contact');
    }
}

我正在尝试使用 paginate code>,同时使用关系从数据库中选择数据。 我有三个 strong>表,用户 code>, contacts code>和 contact_messages code>与模型 strong> 用户 code>,联系 code>, ContactMessage code>。 p>

我正在尝试使用以下方法获取特定用户的所有消息: p>

  public function listMessage($ user_id){  
 $ user1 = User :: find($ user_id); 
 $ messages = $ user1-> contact_messages; 
返回View :: make('message.listmessage')
  - > with('user_id'  ,$ user_id)
  - > with('messages',$ messages); 
} 
  code>  pre> 
 
 

通过这种方法我收到所有消息,但是我 无法对 $ messages code>进行分页。 如何分页 $ messages code>? 有人可以帮忙吗? p>

我的模型和关系如下: p>

  class用户扩展Authenticatable 
 {
公共功能联系人(  )
 {
返回$ this-> hasMany('App \ Contact'); 
} 
公共函数contact_messages()
 {
返回$ this-> hasManyThrough('App \ ContactMessage',  'App \ Contact'); 
} 
} 
  code>  pre> 
 
 

和联系模型 p>

  class联系 扩展Model 
 {
公共函数user(){
返回$ this-> belongsTo('App \ User'); 
} 
 
公共函数消息()
 {
 
返回$ this  - > hasMany('App \ ContactMessage'); 
} 
} 
  code>  pre> 
 
 

最后ContactMessage模型 p>

   class ContactMessage扩展Model 
 {
公共函数contact(){
返回$ this-> belongsTo('App \ Contact'); 
} 
} 
  code>  pre  > 
  div>

Try the following:

$messages  = $user->contact_messages()->paginate(10);