یلدا ادامه داره... ❤️ ۴۰ درصد تخفیف همه دورهها
استفاده از تخفیفهاسلام و عرض ادب
من یک ارور مربوط به صفحه بندی اعلان های خوانده شده در هنگام پیاده سازی دریافت می کنم.این کد کنترلر من است که هنگام اجرا این خطا را می دهد
public function NotificationsRead(User $user)
{
$no = Auth::user()->readNotifications()->paginate(7)->latest()->get();
return view('user-profile.notifications-read', compact('user', 'no'));
}
بعدش این ارور میده
که latest does not exist on this colloctions
وقتی latest بر می دارم به get گیر میده اینو خیلی سرچ کردم داخل اینترنت و استک اور فلو و از چندین روش رفتم به جواب نرسیدم
و این هم بگم که من دو نوع نوتیفیکیشن در جدول دیتا بیس دارم
از خیلی روش رفتم اما نتونستم صفحه بندی درست کنم
@mhyeganeh @gomnam @juza66
این روش رفتم و در کنترلر کد خاصی نزدم و همشو در Blade زدم paginate انجام میشه ولی هر اطلاعات تو هر صفحه به صورت تکراری انجام میده و فقط دکمه صفحه بندی ایجاد میشه و کل نوتیفیکیشن ها هی تو هر صفحه تکرار می شن.
<h5 class="card-title">موضوع:</h5>
@foreach(auth()->user()->readnotifications->where('type','App\Notifications\NewReplySubmittedRoyal') as $notification)
<p class="card-text"><a
href="{{$notification->data['UserProfile']}}">{{$notification->data['name']}}</a>
یک پاسخ برای پرسش شما با محتوای:
{{$notification->data['thread_title']}}
در {{$notification->data['time']}}<br>ثبت کرد.
</p>
<form>
<button type="submit" class=" btn btn-outline-success mb-2 ml-2"><a
href="{{$notification->data['route']}}">لینک پرسش</a></button>
</form>
<hr>
@endforeach
{{--*********** نوع دوم نوتیفیکیشن--}}
@foreach (auth()->user()->readNotifications->where('type','App\Notifications\FollowerNotifications') as $notification)
<p class="card-text">{{$notification->data['name']}} یک پرسش با محتوای:
{{$notification->data['thread_title']}}
ایجاد کرد.
</p>
<a href="{{$notification->data['route']}}">لینک پرسش</a>
<hr>
@endforeach
{{auth()->user()->notifications()->paginate(3)->links()}}
سلام
بعد از paginate نیاز به get کردن نداری خودش میگیره
latest رو هم باید قبل از paginate بیاری
اگر خطا داشت latest و paginate با هم میتونی از orderBy بر روی created_at استفاده کنی
تست کن موردی بود اطلاع بده عزیز
سلام
شما نیازی به متود latest و get ندارید فقط paginate رو قرار بدید و داخل تعداد دیتای برگشتی رو بنویسید، به این شکل :
$no = Auth::user()->readNotifications()->paginate(7)
اینم از مستندات لاراول
https://laravel.com/docs/8.x/pagination
@salar.mohammad2013 @samanzdev سپاس از شما مهندسان عزیز بنده این کارو کردم یعنی طبق چیزی که شما فرمودید
$no = Auth::user()->readNotifications()->paginate(2);
return view('user-profile.notifications-read', compact('user', 'no'));
صفحه بندی اعمال میشه ولی مثلا من کلا 4 تا نوتیفیکیشن دارم و 6 7 صفحه paginate ایجاد میشه و در هر صفحه همون 4 تا نوتیفیکیشن دائم تکرار میشه در هر صفحه (بنده دو نوع نوتیفیکیشن دارم) این هم کد Blade
<div class="card-body">
<h5 class="card-title">موضوع:</h5>
@foreach(auth()->user()->readnotifications->where('type','App\Notifications\NewReplySubmittedRoyal') as $notification)
<p class="card-text"><a
href="{{$notification->data['UserProfile']}}">{{$notification->data['name']}}</a>
یک پاسخ برای پرسش شما با محتوای:
{{$notification->data['thread_title']}}
در {{$notification->data['time']}}<br>ثبت کرد.
</p>
<form>
<button type="submit" class=" btn btn-outline-success mb-2 ml-2"><a
href="{{$notification->data['route']}}">لینک پرسش</a></button>
</form>
<hr>
@endforeach
{{--*********** نوع دوم نوتیفیکیشن--}}
@foreach (auth()->user()->readNotifications->where('type','App\Notifications\FollowerNotifications') as $notification)
<p class="card-text">{{$notification->data['name']}} یک پرسش با محتوای:
{{$notification->data['thread_title']}}
ایجاد کرد.
</p>
<a href="{{$notification->data['route']}}">لینک پرسش</a>
<hr>
@endforeach
{{$no->links()}}
{{-- {{$no->render()}} OR --}}
داداش مشخصه دلیلش
شما اومدی $no رو توی کنترلر خودت مقدار دهی کردی به صورت paginate
درست تا اینجا
متغییری ک قراره مثلا 2 مورد رو فقط برگردونه ازش استفاده ای نکردی توی ویو
و اومدی دوباره از دیتابیس فراخونی کردی توی حلقه و همه ی پیام هات رو دریافت کردی و نمایش دادی
عملا کد paginate اولت الکیه
توی حلقه به جای کد زیر
@foreach(auth()->user()->readnotifications->where('type','App\Notifications\NewReplySubmittedRoyal') as $notification)
از کد زیر استفاده کن
@foreach($no as $notification)
کلا وقتی یه داده ای رو یه بار از دیتابیس دریافت میکنی سعی کن از همون استفاده کنی و هر بار درخواست به سرور ندی چون هم بار سرور زیاد میشه هم سایتت کند تر بالا میاد
جدای از این که کلا اینجا اشتباه بوده دریافت دوباره ی دادت توی حلقه مطرح کردم موضوع رو.
@salar.mohammad2013 مهندس این چیزی که شما می فرمایید هم چند بار انجام داد ولی اون موقع اینارو دیگه نمیشناسه
href="{{$notification->data['UserProfile']}}">{{$notification->data['name']}}</a>
{{$notification->data['thread_title']}}
{{$notification->data['name']}}
چون هر کدومشون برای دو نوع نوتیفیکیشن هست
ببین داداش
شما نیاز به دو داده ی متفاوت داری که هر داده هم paginate بشه واست
پس نیاز به دو فراخوانی داده ی مجزا هم برای این دو داری چون داده هات کلا جدا هستن
نمیشه یک paginate رو برای هر دو استفاده کنی چون بی معنیه
یک داده ی شما از NewReplySubmittedRoyal و دیگری از FollowerNotifications هست
هر دو رو توی کنترلر به صورت مجزا paginate کن و مثلا $no1 و $no2 به blade ارسال کن
خلاصه شما داده ای که فرستادی به ویو رو استفاده نکردی ازش خطای اول شماست
خطای دومتون هم اینه ک با یک paginate دو تا حلقه که دو چیز مختلف رو با تعداد مختلف بازگشت میدن میخوایی paginate کنی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟