
به نام خدا و سلام. در جلسه قبلی بخش دسته بندی ها رو با استفاده از polymorphic relation پیاده سازی کردیم و بخش مدیریت رو هم ایجاد کردیم و در این جلسه قصد داریم با پلاگین جی کوئری select2 دسته بندی ها رو در بخش ایجاد و نمایش پکیج نمایش بدیم.
:: توجه
این مطلب یک جلسه از آموزش لاراول مبتدی تا پیشرفته می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.
با سلام
با چه تابعی میتونم موفقیت آمیز بودن ()sync را گزارش بگیرم؟ میخوام اگر sync انجام شد یه پیام بده و اگر انجام نشد یه پیام دیگه.
با تشکر
سلام مقداری برگشتی رو می تونید چک کنید.
سلام استاد وقتی این کد رو در کنترلر دسته بندی مینویسم تعداد پکیج هاش رو بهم میده
ولی وقتی کد دوم رو در قسمت ویو مینویسم خطا میده
$categories رو نوشتین $category
برای اینکه تعداد پکیج های دسته بندیم رو ببینم این کد رو مینویسم خطا میده.
بقیه موارد مشکلی ندارم ولی نمیدونم چرا برای این مورد اخطار میده
ErrorException in Collection.php line 432:
Type error: Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in C:\xampp\htdocs\larafiles\storage\framework\views\aeb4addb0d616e09a5726b1c91275ce5abbb9bba.php on line 4 and at least 1 expected (View: C:\xampp\htdocs\larafiles\resources\views\admin\category\categoryItem.blade.php) (View: C:\xampp\htdocs\larafiles\resources\views\admin\category\categoryItem.blade.php)
$categories رو نوشتین $category
الان این مورد رو categoriesable_type
خود لاراول متوجه میشه؟
ما از کجا باید بفهمیم که خود لاراول بعضی کارهارو انجام میده؟
از کجا بفهمیم که بعضی فید فیلدها مثل همین فیلد رو خود لاراول پر میکنه.
این موارد رو معمولا خود لاراول در مستنداتش ارائه میده و ما در همین دوره هم بهشون اشاره کردیم.
سلام استاد خسته نباشید
با نوشتن این خط کد
$new_package->categories()->sync($request->input(‘categories’));
لاراول چطور متوجه میشه هر کدوم از فیلد هارو در چه فیلد از جدول واسط قرار بده.
در جدول categoriesable چطور متوجه میشه که فیلد categoriesable_type رو پرکنه.
ماهیت دقیقش رو من متوجه نمیشم.
سلام دوست عزیز. این مورد توسط رابطه هایی که لاراول بین مدل ها برقرار میکنه اجرا میشه و از این رابطه ها تشخیص میده فیلد ها باید چه مقادیری رو باید داشته باشه.
سلام
جلسات خیلی داره کند پیش میره ، شما گفته بودید هفته ای 3 جلسه الان تقریبا شده 1 جلسه …
سلام. داریم قالب جدید سون لرن رو آماده می کنیم که تا فردا کارش تموم میشه و حتما جلسات جدید رو با سرعت بیشتری منتشر می کنیم.
سلام
از بارگذاری قالب جدید سایت چند هفته میگذره اما هنوز یه جلسه جدید هم نذاشتید …
سلام دو قسمت جدید منتشر شده و این هفته قسمت های جدید هم منشتر میشه.
سلام متوجه یه اشکال شدم گفتم باشما درمیان بذارم ,وقتی میخوایم یوزر رو ویرایش کنیم پسورد دیگه ولیدیشن نمیشه یعنی میتونیم پسورد یک رقمی وارد کنیم بعد سیو کنیم این درصورتیه که ما مینیمم رو 6 و ماکزیمم رو 12 در نظر گرفتیم, لطفا راه حل براش پیدا کنید
در حالت ویرایش می تونید چک کنید اگر کاربر فیلد پسوورد رو وارد کرده بود rule براش اعمال بشه.این کارو می تونید با FormRequest انجام بدین.
سلام.استاد من دقیقاً عملکرد تابع sync رو متوجه نشدم.این متد مشابه تابع toggleclass جی کوئری عمل میکنه؟یعنی attach میکنه در صورت detach باشه و بالعکس.یه مشکل جزئی توی حذف رکوردهای جدول واسه categorizable هست و اون اینه که اگر توی فرم ویرایش package همه categoryهای را حذف کنیم شرط
توی متد update کنترلر package، برابر false میشه و عملیات sync رو انجام نمیده پس باید توی متد update همیشه دسته بندیهای یک پکیج را همیش اول dettach کرد بعد sync کرد؟یعنی
سلام. متد sync یک آرایه میگیره مقادیر موجود در آرایه به دو صورت بررسی میشن. اگر در دیتابیس وجود داشته باشن و در آرایه نباشه، میاد اونارو از دیتابیس حذف میکنه. اگر در آرایه باشه ولی در دیتابیس نباشه اونارو به دیتابیس اضافه میکنه.
ممنون.استاد من میخوام مثلاً بخش مدیریت دسته بندیها بگونه باشه ای که وقتی یک رکورد را حذف میکنم(مثلاً دسته فتوشاپ) بطور اتوماتیک تمام فایل ها و پکیجهای متصل به این مجموعه از جدول واسطه(Categorizables) حذف بشه.روش اصولی و منطقی این کار چیه؟باید از متد sync استفاده کنم و قبل از حذف رکورد در جدول category، فایلها و پکیجهای متصل شده به این مجموعه را detach کنم یا از Mysql کمک بگیرم و نوع actionهای جدول واسط را CASCADE یا RESTRICT بذارم؟!یا روش دیگر؟
سلام می تونید قبل از حذف کردن رکورد کامل detach کنید و بعدش حذف کنید یه روش دیگه هم استفاده از رویداد حذف کردن مدل های لاراول هستش که در هنگام حذف کردن می تونید تمام relation ها رو حذف کنید.