0
2つのテーブルがあり、そのうちの1つが「投稿」で、もう1つが「通知」です。私は、ページとページの投稿と通知のリストをユーザーに表示したい。どのように効率的に行うことができますか? 私はこのコードをうまく動作させていますが、すべてのデータを取得してスライスするので効率的ではありません。 MYSQLを使用してページネーションを行いたいlaravel 2つの別個のテーブルから項目を取得し、ページ区切りと結果をマージする
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)) ;
}