Golden Code – Telegram
Golden Code
738 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
در belongsTo ,hasMany میشه به سبکِ دیگه ای هم کد رو نوشت، در تصویر زیر بهش اشاره شده ،با این روش میشه بدون ارسال اطلاعات parent's id درخواست رو ارسال کنیم.

در مثال زیر، post رو ساختیم بدونه اینکه نیاز باشه آیدیه والد رو درخواست‌ کنیم 🌴🪴


@golden_code_ir

https://x.com/PovilasKorop/status/1754105525476687994?t=p6IVOzvGgFbdhnTcW_6ogQ&s=35
👍5
در elequent میشه ()whereHas و ()orDoesntHave رو داخله یه جمله ترکیب کرد،
اینکار بر خوانایی کد تاثیر مثبتی داره، مثل زبان عامیانه میشه کد رو خوند و درک‌‌ کرد🪴🌴

@golden_code_ir

https://x.com/PovilasKorop/status/1754456085199532097?t=HMxh704xIkKVRVEo7-iOsw&s=35
👍3
اگه داخل پروژتون، رکورد هایی دارین که وضعیت های published یا unpublished داره در کنترلر میتونین از ()abort_unless یا ()abort_if استفاده کنین در عملیاته چک‌ و فیلتر‌گذاری👌🏾
(در route model binding )🪴🌴

@Golden_code_ir

https://x.com/PovilasKorop/status/1754828536978854183?t=u3DFuOmJHlOQ31Wl6IeLFA&s=35
👍3
میشه where هارو با استفاده از closure function ها در elequent گروه بندی کرد،در زیر به روش اشتباه و همچنین طریقه ی درسته نوشتنه این کوئری اشاره شده، به مثال زیر توجه کنین: 🌴🪴

@golden_code_ir

https://x.com/laravelbackpack/status/1663471632189366273?t=iMatvkpPX42UmARiuI1a8A&s=35
👍3
میتونیم با استفاده از دستورالعمل class در داخلِ blade، کلاس هارو بصورت مشروط به عنصر html اضافه کنیم،
چجوری کار میکنه؟؟
بصورت آرایه ای دستورالعمل رو میپذیره و همچنین در نظر داشته باشید که کلیدِ آرایه، نامِ class هستش و مقدار هم باید بصورت boolean باشه . 🪴🌴
(برای درک بهتر به تصویر زیر توجه کنین)
@golden_code_ir

https://x.com/iamgurmandeep/status/1755704760165191755?t=n93g9uNadScsvblEs3jtzQ&s=35
👍31
همونطور که مستحضر هستین، collection، چندین متود داره، ✔️
یکی از این متود ها()forpage هست،که میتونه امکانِ یه صفحه بندیه ساده برای مجموعه دیتا های کوچیکی که ممکنه در حافظه داشته باشیم انجام بده،

به عنوان آرگومانِ ورودی هم شماره ی page و تعداد آیتم هایی ک توو هر صفحه باید فرستاده شه رو مشخص کرد.

همچنین میتونه یه گزینه ی مناسبی واسه جایگزینیه ()slice داخل سناریو های مختلف محسوب شه(به مثال توجه کنین).🌴🪴

@GoldenCodeir
منابع کامل🔥:
https://www.tahlildadeh.com/ArticleDetails/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Collection-%D9%87%D8%A7-%D8%AF%D8%B1-laravel

https://x.com/_newtonjob/status/1755907205650379018?t=bv2cC-U6N7aIg9THyAUuyA&s=35
👍4
هنگام تعریفِ foreign id ها،‌لاراول چندید روش رو بهمون پیشنهاد میده که یکی ازونا "()foreignIdFor" هستش🔥
به مثال زیر توجه کنین، با اون کد میاد واسمون یه ستون user_id از model ایجاد میکنه که نوعِ unsignedBigInteger هستش، این روش در خوانا تر شدنه کد هم تاثیر بیشتری داره.🪴🌴

@Golden_code_ir

منابع کامل👌🏾:
https://x.com/OussamaMater/status/1756290227373564051?t=eLhoIoTA6Byx6Oe5XNFZqA&s=35

https://laraveldaily.com/post/eloquent-foreign-keys-syntax
👍8
یه روشِ تمیز تر و مختصر تر برای ()whereHas داریم تحت عنوانِ ()whereRelation که هم اکنون از ورژن 8.57 لاراول میتونین ازش استفاده کنین✔️

(به مثالش توجه کنین تا ببینید چجوری میشه ازش استفاده کرد، بسیار راحت و کاربردی) 🪴🌴

@GoldenCodeir


https://x.com/PovilasKorop/status/1756992800929755632?t=hOUvJWQreukguSWPVuW6ww&s=35
2👍1
اگه میخواین چنتا ستون رو پس از یه ستون ایجاد کنین میتونین بدین شکل after رو اعمال کنین تا طبق خواستتون فرایندِ مدنظر ایجاد شه براتون✔️

در مثال زیر اشاره شده که پس از ایمیل status, address,city, state‌‌ ایجاد بشن
(به مثالِ موجود در منبع توجه کنین)🪴🌴


@GoldenCodeir

https://x.com/iamgurmandeep/status/1757520019158634777?t=CtqCFfvjH-YfTFHKOIfnKw&s=35
3👍1
از بیرون کشیدنه مدل ها به حافظه فقط واسه برداشتنه کلیدشون و اجرای کوئریه دیگه تا جای ممکن بهتره اجتناب کنیم،⏸️
بجاش میشه از یه روشی استاندارد تر استفاده کرد :به تصویرِ موجود داخله منبع توجه کنین و ببینید استفاده از مفهومِ subquery چقدر کار رو راحتتر میکنه👌🏾 🪴🌴

(اگر نمیدونینsubquery یعنی چی :
https://www.tahlildadeh.com/ArticleDetails/Subquery-%D8%AF%D8%B1-Oracle)

@GoldenCodeir

https://x.com/_newtonjob/status/1757774870455202250?t=Ec6SiskuxHRtkGLD3S2szQ&s=35
👍61
شاید گاهی یک رابطه ی one to many‌ یا many to many داشته باشیم و بخوایم یک‌پیوندِ انبوه انجام بدیم
خب یکی از راه ها استفاده ی از attach هستش، اما این روش میتونه بطورِ ملموسی کُند و باعث تاثیر منفی بر performance بشه، مخصوصن با رکورد های بزرگ،❌️
درصورت امکان، استفاده از ()insertUsing میتونه جایگزینه مناسبی باشه👌🏾

@GoldenCodeir

(به تصویرِ موجود در منبع توجه کنین 🪴🌴)

https://x.com/_newtonjob/status/1758490309866995999?t=5PS9bL2_sXTjyXXjnUYTRQ&s=35
👍41👏1
میشه از withCount برای دریافت کردنه تعداد از رابطه ی مربوطه ، اونم بدون بارگیری کردنش استفاده کنیم، از متود های مفیده👌🏾
همونطور که در منبع اشاره شده در جایی مثل نمایش دادنه آمار میشه به راحتی ازش استفاده کرد 🪴🌴

@GoldenCodeir
(جهت درک بهتر به تصویر و منبع دقت کنین🍃)

https://x.com/OussamaMater/status/1757451108950143231?t=wU4fKs5agVDoxUDQoeyHvQ&s=35
2👍2
گاهی مجبوریم از یه بلوکِ try catch فقط برای ignore کردنه یک استثنا و حالته دیفالته یه value استفاده کنیم.
در مثال اول اگر یک exception بره بطور دیفالت "en" انتخاب میشه.🪴🌴
اما روش تمیزتری هم وجود داره برای این کار، که با استفاده از هلپره rescue میشه ازش بهره مند شد، که بی شک تاثیر مثبتی بر مقوله ی clean code خواهد گذاشت✔️

@GoldenCodeir
(برای درک به منبع و مثالش توجه کنین)

https://x.com/OussamaMater/status/1758829385983885443?t=Va_5KHCGc_RiYN-6HvQELw&s=35
👍51🍾1
پیش نیازه درکِ این مقاله:
https://www.w3schools.com/sql/func_mysql_current_timestamp.asp

"در هنگام ایجاد کردنه migration ها اگه از نوع ستون()timeStamp به همراهه آپشن های ()useCurrent و ()useCurrentOnUpdate استفاده کنید میتونین CURRENT_TIMESTAMP رو به عنوان مقدارِ پیشفرض اعمال کنین"🪴🌴

@GoldenCodeir

(به منبع توجه کنین✔️👇🏽)
https://x.com/PovilasKorop/status/1759891905486213285?t=i9cMA4m_HPrJ4H28h_BMbA&s=35
👍51
"در elequent برای بررسیه وجود یا عدم وجوده یک شناسه ی مدنظر میتونین از متود های exists یا dosentExist استفاده کنین، یه بررسیه ساده✔️
تک خطی و فاقد هرگونه پیچیدگی"👌🏾

همونطور که مشاهده میکنین در مثال زیر email مورد آنالیز قرار گرفته تا در صورت وجود یا عدمِ وجودش پاسخ مدنظر به ما ارائه شه🪴🌴

@GoldenCodeir

(به تصویر و محتوای منبع دقت کنین 👇🏽)

https://x.com/laravelbackpack/status/1759525941104013432?t=mHFKHI0m5mzVR57XLJWixg&s=35
4👍2
"در لاراول متودی هم داریم تحتِ عنوان toQuery
که این امکان رو بهمون میده تا تنها با اجرای یک whereIn یه مجموعه رو در یه عبارت کوئری واسمون بره و آپدیت کنه✔️"
(پیچیده شد؟😁)

به منبع و تصویرش توجه کنین و ببینید چقدر کد رو تمیز تر کرده و باعث شده نیازی به نوشتنه foreachنداشته باشیم 🪴🌴

@GoldenCodeir
مقاله ی فارسی هم راجبش پیدا کردم اگه خواستین نگاه بندازین:
https://laraplus.ir/blog/5-eloquent-tips-you-missed

https://x.com/OussamaMater/status/1759232452713742404?t=LHxW56yrPJDLy4GtYjsUbQ&s=35
4👍4
"میشه یک مدل را بدونه اینکه نیازی به تغییر و بروز رسانیه تایم استمپ "updated_at" باشه، عملیاته آپدیت رو واسش انجام بدیم.
چجوری؟👇
کافیه از متود withOutTimestamps استفاده کنیم، به منبع و تصویرش توجه کنین، همونطور که می‌بینید بدون نیاز به تغییراته تایم استمپ ،عملیاته مدنظر انجام شد"🪴🌴

@GoldenCodeir

https://x.com/OussamaMater/status/1760992315848470908?s=35
👍53
"در لاراول متود دیگه هم هست تحت عنوان ()inRandomOrder و خب این متود در شرایطی کاربرد داره که نیاز داشته باشیم نتایج query بصورته رندوم مرتب شه واسمون.✔️"

استفاده ازش هم کاره ساده ایه، در منبع و تصویره مربوطه به چگونگیه استفاده از این متود با سه مثال ذکر شده🪴🌴

@GoldenCodeir

https://x.com/OussamaMater/status/1761431101799600188?t=Q8xGY8UAoMhJWt5SAhbULw&s=35
👍6💯21
"همونطور که میدونین در حین کوئری زدن با استفاده از متود ()withTrashed میشه رکورد های حذف شده(soft_delete) رو هم دریافت کرد. اما خب در route هم میشه ازش استفاده کرد .✔️

اگه میخواید در route از این متود استفاده کنید کافیه پس از مشخص کردنه کنترلر و متوده مربوطه ، withTrashed رو بنویسین ." 🌴🪴

@GoldenCodeir
به منبع و تصویرش دقت کنین.👇🏾

https://x.com/laravelbackpack/status/1761700225477980450?t=MmoGcC9KzBtE72nUwJm6Qw&s=35
👍51🔥1
"از متود ()Arr::take میشه جهته دریافته آیتمی که از آرایه نیاز داریم استفاده کنیم.
اگه قصد داشته باشیم از انتهای آرایه اقدام به دریافته آیتمی کنیم باید از اعداد منفی استفاده کنیم،

در غیر اینصورت هم که کافیه از همون اعداد مثبت(طبیعی) استفاده کنیم برای دسترسی به آیتم." 🌴🪴
@GoldenCodeir

(به منبع و تصویری که گذاشته منبع دقت کنین، اگر 1- رو درخواست کنیم عدد آخر (9) رو به ما بر میگردونه.)👇🏾
https://x.com/iamgurmandeep/status/1761121247881302066?t=N8rgBZA1mejLWcuZGxklKA&s=35
👍42
در لاراول متود دیگه ای هم هستش تحت عنوان ()saveMany که خب این امکان رو بهمون میده تا بتونیم چندین مدل مرتبط رو بطور همزمان ذخیره کنیم🌴🪴

@GoldenCodeir
همونطور که در مثالِ منبع مشاهده میکنین بصورت آرایه ای درخواست ارسال شده✔️👇🏾

https://x.com/OussamaMater/status/1763164790921335018?t=hlQCmCa8MDvBiAMOzzVHaQ&s=35
👍61