laravel 中多对多关系的分页
Pagination with many to many relationship in laravel
我正在尝试在 laravel 4.2 中设置电子邮件系统。我有两个模型 Email 和 User ,它们之间存在多对多关系。到目前为止一切顺利,但现在我在分页发送电子邮件时遇到了问题。我已经尝试了 2 天,但还没有完成任务。
//User.php Model
public function emails()
{
return $this->belongsToMany('Email', 'users_email', 'reciever_uid','email_id')->
withPivot('sender_UID');
}
//Email.php Model
public function users()
{
return $this->belongsToMany('User', 'users_email', 'email_id','reciever_id');
}
我试图获取 users_email 数据透视 table 数据以获取当前的所有电子邮件 ID
经过身份验证的用户 QueryBuilder。
$user=Auth::Id();
$user_data=DB::table('users_email')->
join('users','users_email.reciever_uid','=','users.Id')->
where('users_email.sender_uid','=',$user->Id)->orderby
('users_email.email_id','desc')->get();
foreach ($user_data as $data) {
$id[]=$data->email_id;
}
现在我有了 $id 数组,我想获取所有电子邮件以及要显示的收件人的 f_name 和 l_name。
到目前为止,我已经尝试使用一些基本知识进行急切加载,但无法获得
预期结果。我已经尝试过这样的方法来对其中的所有电子邮件进行分页
$id 但 getTotal returns 只有 2,即使下图指定 id=78 的电子邮件已发送 8 n,所以我想通过电子邮件分页。
E.x 预页只有 10 封电子邮件。
$pagination=User::with(array('emails'=>function($query) use ($id){
$query->WhereIn('users_email.email_id',$id);
}))->paginate(10);
非常感谢任何帮助。
谢谢
旋转 Table users_email
你必须写出两种不同的关系:
//User.php
public function emailsReceived()
{
return $this->belongsToMany('Email', 'users_email', 'reciever_uid','email_id')->withPivot('sender_uid');
}
public function emailsSent()
{
return $this->belongsToMany('Email', 'users_email', 'sender_uid','email_id')->withPivot('reciever_uid');
}
然后您将能够简单地检索所有已发送的电子邮件:
$user = Auth::user();
$emailsSentByUser = $user->emailsSent;
$paginatedEmailsSentByUser = $user->emailsSent()->paginate(10);
请注意,当您在关系名称后添加方括号时,您可以链接查询生成器方法。
我正在尝试在 laravel 4.2 中设置电子邮件系统。我有两个模型 Email 和 User ,它们之间存在多对多关系。到目前为止一切顺利,但现在我在分页发送电子邮件时遇到了问题。我已经尝试了 2 天,但还没有完成任务。
//User.php Model
public function emails()
{
return $this->belongsToMany('Email', 'users_email', 'reciever_uid','email_id')->
withPivot('sender_UID');
}
//Email.php Model
public function users()
{
return $this->belongsToMany('User', 'users_email', 'email_id','reciever_id');
}
我试图获取 users_email 数据透视 table 数据以获取当前的所有电子邮件 ID 经过身份验证的用户 QueryBuilder。
$user=Auth::Id();
$user_data=DB::table('users_email')->
join('users','users_email.reciever_uid','=','users.Id')->
where('users_email.sender_uid','=',$user->Id)->orderby
('users_email.email_id','desc')->get();
foreach ($user_data as $data) {
$id[]=$data->email_id;
}
现在我有了 $id 数组,我想获取所有电子邮件以及要显示的收件人的 f_name 和 l_name。 到目前为止,我已经尝试使用一些基本知识进行急切加载,但无法获得 预期结果。我已经尝试过这样的方法来对其中的所有电子邮件进行分页 $id 但 getTotal returns 只有 2,即使下图指定 id=78 的电子邮件已发送 8 n,所以我想通过电子邮件分页。 E.x 预页只有 10 封电子邮件。
$pagination=User::with(array('emails'=>function($query) use ($id){
$query->WhereIn('users_email.email_id',$id);
}))->paginate(10);
非常感谢任何帮助。
谢谢
旋转 Table users_email
你必须写出两种不同的关系:
//User.php
public function emailsReceived()
{
return $this->belongsToMany('Email', 'users_email', 'reciever_uid','email_id')->withPivot('sender_uid');
}
public function emailsSent()
{
return $this->belongsToMany('Email', 'users_email', 'sender_uid','email_id')->withPivot('reciever_uid');
}
然后您将能够简单地检索所有已发送的电子邮件:
$user = Auth::user();
$emailsSentByUser = $user->emailsSent;
$paginatedEmailsSentByUser = $user->emailsSent()->paginate(10);
请注意,当您在关系名称后添加方括号时,您可以链接查询生成器方法。