سلام خسته نباشید من دارم از livewire استفاده میکنم
use WithPagination ;
public $pageOne = 1 ;
public $article ;
public $hasMorePages ;
public function mount()
{
$this->article = $this->loadArticles();
}
public function render()
{
return view('livewire.Front.article.article')
->layout('front.layouts.main');
}
public function loadArticles()
{
$articles = Cache::remember('__Articles__route__' , now()->addDay(), function() {
return Article::query()->paginate(12 );
});
return $articles ;
}
الان با خطای
Property type not supported in Livewire for property: \[{"currentpage":1,"data":\[{"id":1,"title":"test 2","score":300,"image":
مواجه شدم چحوری باید هندلش کنم ؟ ممنون
Livewire قابلیت پشتیبانی از متغیرهای با نوع پیچیده مانند کلاسها یا مدلهایی که از پایگاه داده بارگذاری میشوند را ندارد. برای حل این مشکل، شما باید فقط دادههای مورد نیاز خود را از مدل بیاورید و در یک متغیر ساده ذخیره کنید.
به نظر میرسد که شما دارید مقالات را از پایگاه داده بارگذاری میکنید و میخواهید از آنها در نمایش خود استفاده کنید. یک راه حل برای این مشکل این است که به جای ذخیره کل مدل Article
در متغیر article
، فقط دادههای مورد نیاز خود را از آن استخراج و در یک آرایه یا یک آبجکت ساده ذخیره کنید.
یک راه حل میتواند این باشد:
loadArticles
به شکل زیر:public function loadArticles()
{
$articles = Cache::remember('__Articles__route__', now()->addDay(), function() {
return Article::query()->select(['id', 'title', 'score', 'image'])->get()->toArray();
});
return $articles;
}
در این تغییر، من فقط چهار فیلد id
, title
, score
, و image
را از مدل Article
استخراج کردهام. شما میتوانید فیلدهای دیگری را نیز اضافه کنید.
$article
به شکل مستقیم، از دادههای استخراج شده استفاده کنید.Article
نیاز دارید، بهتر است که آنها را به صورت جداگانه بیاورید و در متغیرهای ساده ذخیره کنید.آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟