Ich habe zwei Tabellen, eine davon ist "Beiträge" und die andere ist "Benachrichtigungen". Ich möchte den Benutzern eine Liste mit Posts und Benachrichtigungen mit Paginierung anzeigen. Wie kann ich das effizient machen? Ich habe diesen Code, der gut funktioniert, aber es ist nicht effizient, weil ich alle Daten bekomme und sie dann in Scheiben schneiden. Ich möchte die Paginierung tun, MYSQL mitLaravel erhalten Elemente aus zwei separaten Tabelle und füge das Ergebnis mit der Seitennummerierung
public function list_post_notification(Request $request , $page_number = 1 , $per_page=10 , $brand_id = null){
$brand =$this->brandRepository->getMagazinBrand() ;
$posts = $brand->posts()->orderBy('posts.created_at' , 'desc')->take($page_number * $per_page) ;
$notifs = $brand->notifications()->orderBy('notifications.created_at' , 'desc')->take($page_number * $per_page) ;
$result = [] ;
foreach ($posts->get() as $k=>$v){
$item = [
'type'=>'post' ,
'uuid'=>$v->uuid,
'title'=>$v->title,
'created_at'=>strtotime($v->created_at),
'creator'=>$v->brand->fa_name,
'brand_id'=>$v->brand->id,
];
$result[$item['created_at']] =$item ;
}
foreach ($notifs->get() as $k=>$v){
$item = [
'type'=>'notification' ,
'uuid'=>$v->uuid,
'title'=>$v->title,
'created_at'=>strtotime($v->created_at),
'creator'=>$v->brand->fa_name,
'brand_id'=>$v->brand->id,
];
$result[$item['created_at']] =$item ;
}
krsort($result) ;
$start = 0 ;
if ($page_number > 1)
$start = ($page_number -1) * $per_page ;
return response()
->json(array_slice($result , $start , $per_page)) ;
}