我可以为用户 5 单独分页通知和子通知,notifiable_id
没有任何问题。但是,我试图在一个实例中将结果一起分页。
1) 数据库表名/数据
notifications
subnotifications
2) 分页
我可以像这样对我单独拥有的每个关系进行分页:
$notifs = $user->notifications()->where('type', 'UserWasFollowed')->paginate(10);
$subnotifications = $user->subnotifications()->with('notification')->paginate(10);
我需要能够合并它们以仅取回一个paginate(10)
同时具有通知和子通知的实例,因此例如(伪代码):
$allNotifs = $user->(notifications()->where('type', 'UserWasFollowed'))
->(subnotifications()->with('notification'))
->paginate(10);
如何有效地使用一个分页实例来完成?
更新1:
用户模型
class User extends Authenticatable {
use Notifiable;
use HasSubnotifications;
}
子通知模型
class Subnotification extends Model {
protected $table = 'subnotifications';
// set up relation to the parent notification
public function notification() {
return $this->belongsTo(DatabaseNotification::class);
}
// Get the notifiable entity that the notification belongs to.
public function notifiable() {
return $this->morphTo();
}
}
查询用户:
一种。UserWasFollowed
表中的类型通知notifications
。
湾。来自表格的子通知以及来自subnotifications
表格的相关通知notifications
。
$allNotifications = $user->subnotifications()->whereHas('notifications',function($query){
$query->where('type', 'UserWasFollowed');
})->with('notification')->get();