Я могу разбивать уведомления и субнотики для пользователя notifiable_id 5 индивидуально без каких-либо проблем. Тем не менее, я пытаюсь, чтобы результаты были разбиты на страницы в одном экземпляре.
1) имя / данные таблицы БД
 notifications 
  
 
 subnotifications 
  
 
2) Разбиение страниц
Я могу разбивать каждое отношение, которое у меня индивидуально:
 $notifs = $user->notifications()->where('type', 'UserWasFollowed')->paginate(10); $subnotifications = $user->subnotifications()->with('notification')->paginate(10); 
  Мне нужно объединить их, чтобы вернуть только один экземпляр paginate 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(); 
        
    Имея мало информации о цели таблицы субнотирования или о том, что она делает, вы можете попробовать следующий метод:
 public function your_method_name() { /* IMPORTANT : Purpose of subnotification must be known to have a more structured query */ $collection = $user->notifications()->where('type', 'UserWasFollowed')->get()->merge($user->subnotifications()->with('notification')->get()); $currentPage = LengthAwarePaginator::resolveCurrentPage(); $perPage = 10; $currentPageData = $collection->slice($currentPage * $perPage, $perPage)->all(); $paginatedFinalCollection = new LengthAwarePaginator($currentPageData, count($collection), $perPage); return dd($paginatedFinalCollection); } 
  Примечание. Говоря об эффективности, цель subnotification должна быть известна, зачем она вам нужна и как вы собираетесь использовать данные, полученные во втором запросе.  Ответ на это может повлиять на $collection 
  РЕДАКТИРОВАТЬ 
  Простым способом, о котором я могу думать, является использование замыкания в вашей загруженной загрузке. Итак: 
 $sn = $user->subnotifications()->with(['notification'=>function($query){ $query->where('type','UserWasFollowed'); }])->paginate(10); 
Вы можете узнать больше об этом в Laravel Eloquent Relationships в разделе « Ограничение нагрузки»
  ОБНОВЛЕНИЕ 2 
  попробуй это 
 $user->subnotifications()->whereHas('notifications',function($query){ $query->where('notification_type','UserWasFollowed'); })->with('notifications')->get(); 
  Использование этого с подобной настройкой работало отлично для меня. 
  Примечание. Обязательно измените имена отношений на их соответствующие, если они не совпадают 
  ОБНОВЛЕНИЕ 3 
  При использовании вашей точной настройки для субнотий, указанных в соответствующем вопросе, со следующими запросами: 
  Notifications\TestNotification.php аналогичны примеру SomethingCoolHappen.php в примере. 
  Модель, канал и миграция одинаковы.  Поэтому вы можете использовать их так, как они есть. 
  Что я сделал, чтобы получить то, что вам нужно, это следующее: 
 Route::get('/step1', function () { // example - my followers $followers = App\User::first(); // notify them $x = Notification::send($followers, new TestNotification(['arg1' => 1, 'arg2' => 2])); dd($x); }); Route::get('/step2', function () { // my follower $user = App\User::find(1); $subnotifications = $user->subnotifications()->whereHas('notification',function($query){$query->where('type','App\Notifications\TestNotification');})->with('notification')->get(); //this gives you the subnotifications collection with the notification included dd($subnotifications); //get the notification linked to one entry of the collection dd($subnotifications->first()->notification()->first()); });