خطای class not found در لاراول

ممکن است در هنگام کار با لاراول با خطایی مشابه خطای زیر مواجه بشید :

این  خطا بیان گر این است که کلاس مورد نظر یافت نشد.
در صورتی که از روابط موجود در لاراول استفاده کرده اید :
منظور : hasone ، hasmany  و…
ممکن است سینتکس  کلاس مورد نظر را به اشتباه اعلان کرده باشید برای مثال اگر یک رابطه یک به چند (hasmany) را اینگونه تعریف کرده باشید :

آن را به یکی از دو روش زیر اصلاح کنید :

روش اول :

روش دوم :

نکته : گاهی اوقات ممکن است استفاده از روش اول نیز به شما همین پیام خطا را مبنی بر این که کلاس مورد نظر یافت نشد را بدهد.
هر چند در منابع آموزشی روش اول نیز معرفی شده است ولی بند در تجربه کاری با استفاده از روش اول نیز به خطا برخورد کرده و با استفاده از به روش دوم مشکلم برطف گردید.

خروج کاربر در لاراول

کدهای زیر مربوط به ایجاد لینک خروج کاربر احراز هویت شده در لاراول هستند :

توضیح :
خطوط ۱ تا ۵ : ساخت یک لینک با مضمون خروج کاربر
خطوط ۷ تا ۹ : فرم مورد نیازی که برای خروج کاربر ارسال می شود و لینک ایجاد شده (در خطوط ۱ تا ۵)آن را فراخوانی می کند.

رفتن به URL قبلی در لاراول

سلاک دوستان

برای هدایت کاربر از url فعلی به url  قبلی از کد زیر استفاده می کنیم :

برای مثال  با فرض اینکه کنترلر خورد را به صورت resourceful ایجاد کرده باشید ، می توانید از کدبالا  در انتهای متد store که مربوط به ذخیره سازی اطاعات در دیتابیس است استفاده کنیم.بدین ترتیب پس از ذخیره شدن اطلاعات در دیتابیس کاربر به صفحه قبلی  هدایت می شود.

برگشتن به صفحه قبل در Blade
nv  صورتی که بخواهیم  در Blade  کاربر ر ا به صفحه قبلی که مشاهده کرده بود هدایت  کنیم از کد زیر استفاده می کنیم :

 

 

قرار دادن یک سطر پیشفرض در Migration لاراول

سلام دوستان
همان طور که میدونید موقع ایجاد یک پروژه و کارکردن روی اون ممکنه به دلیل تغییرات بارها مجبور باشیم ک جداول رو پاک و دوباره ایجاد کنیم.که یکی از مشکلاتی که برامون پیش میاد وارد کردن دوباره اطاعات در جداول هست.

به طور کل  : در صورتی که می خواهید با ایجاد هر جدول توسط Migration به طور خودکار یک سطر پیش فرص در آن ایجاد شود مشابه زیر بعد از اسکیمای ساخت جدول میتوانید یک سطر پیش فرض ایجاد کنید .به این ترتیب موقعی که جدول مود نظر ایجاد می شود سطر تعریف شده شما مشابه آنچه در زیر آمده در جدول قرار می گیرد.

Migration مربوط به جدول مشتری خطوط ۲۷ تا ۳۶

توضیح : بعد از بسته شد اسکیمای create مشابه انچه در  بالا می بیند (خطو ۲۷ تا ۳۶) اقدام نمایید.

ساختن همزمان Controller و Migration مربوط به Model

سلام دوستان امیدوام حالتون خوب باشه
همان طور که می دونید برای ساختن یک مدل از دستور زیر استفاده می کنیم :

که در مثال بالا MyModel نام دلخواهی است که برای مدل مان در نظر گرفته ایم.
در صورتی که بخواهیم همزمان برای یک مدل Migration و Controller مربوط به آن نیز ساخته شود از آپشن های زیر در آخر دستور  تعریف مدل استفاده می بریم :

-m یا –migration :  ساخت  Migration برای مدلی که میخواهیم بسازیم.
-c   یا–controller :  ساخت  controller برای مدلی که میخواهیم بسازیم.
-r  یا –resource :  اختصاص دادن کدهای مربوط به resource بودن روت فراخوان کننده کنترلر.

می تواننیم به صورت دلخواه از یکی از این آپشن ها استفاده کنیم یا همزمان از ۳ تا به صورت زیر استفاده کنیم :

اجرای  دستور بالا باعث ساخت یک Model به همراه کنترلری که دارای توابع resource  است و همچینین یک migration برای مدل نامبرده می شود.

رفع نقص merge کالکشن های لاراول

احتمالا تا حلا براتون پیش اومده باشه که بخواهید چندین کالکشن را با هم ادغام کنید.
ما این کار را در لاراول به وسیله تابع merge() انجام میدهیم ولیایتفاده از این تابع دارای یک نقص هست که ممکنه در هنگام کار با لاراول با این نقص برخورد کنید.

با ذکر مثالی این نقص رو معرفی و راه حلش آموزش می دهیم.

فرض کنید ۳ تا Elequent Collection مشابه زیر داریم :

حالا فرض کنید که کالکشن $cars و $bikes هر دو دارای یک المنت با نام id و مقدار یکسان ۱ باشند.در این مورد اگر بخواهیم این دو کالکشن را به وسیله متد ()merge و مشابه زیر با هم ادغام کنیم :

نتیجه اش از دست دادن یکی از کالکشن های نامبرده می شود و دلیلش هم همان طور که در بالا ذکر شد یکسان بود المنت های این دو کالکشن است.

راه حل 

ابتدا یک کالکشن خالی ایجاد میکنیم و بعدش فانکشن merge رو روی این کالکشن خالی صدا میزنیم.بدین صورت تمام کالکشن ها بدون مشکل owerwrite با هم ادغام و در کالکشن خالی قرار می گیرند.

  • نکته اش اینجاست که در این روش از اونجایی که کالکشن ما در ابتدا خالی است و هیچ عنصری ندارد پس هیچ تصادمی با کالکشن های بعدی بوجود نمیاد و هیچ owerwrite ای صورت نمیگیرد.

افزودن عنصر جدید به آرایه در لاراول

تابع add_array در لاراول یک زوج کلید/مقدار را دریافت کرده و آن را در آرایه مورد نظر شما قرار می دهدالبته به شرط اینکه کلید معرفی شده از قبل در آرایه موجود نباشد.در زیر نحوه استفاده از این تابع را می بینید :

توضیحات :
همان طور که میبینید تابع add_array سه آرگومان میگیرد .
array : آرایه ای است که ما میخواهیم المنت مورد نظر را به صورت کلید مقدار در آن اضافه کنیم.
new_key : کلیدی المنتی است که میخواهیم آن را اضافه کنیم .
new_value :مقداری است که میخواهیم آن را اضافه کنیم .

مثال اول  :

خروجی :

 

مثال دوم :

خروجی :

 

دریافت مقادیر Enum از جداول در لاراول

با الگوبرداری و بکارگیری از تکه کد زیر می تونید مقادیر Enum را از یک جدول دریافت کنید :

 

رفع خطای Fix the “Specified key was too long error در لاراول

سلام دوستان
احتمالا هنگام کار با دیتابیس یا Migrate ها در لاراول با اروری مشابه ارور زیر برخورد کرده اید :
[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

برای رفع این مشکل به مسیر
app/Providers/AppServiceProvider.php برید و کد زیر رو در فانکشن boot قرار بدید :