Golden Code – Telegram
Golden Code
738 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
از بیرون کشیدنه مدل ها به حافظه فقط واسه برداشتنه کلیدشون و اجرای کوئریه دیگه تا جای ممکن بهتره اجتناب کنیم،⏸️
بجاش میشه از یه روشی استاندارد تر استفاده کرد :به تصویرِ موجود داخله منبع توجه کنین و ببینید استفاده از مفهومِ 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
در لاراول میتونیم به فیلد هایی که فرمت json هستن هم کوئری بزنیم...✔️
چجوری؟

به مثال سوم در تصویرِ منبع نگاه کنین:
خواسته شده تا همه ی کاربرانی رو که در آرایه ی languages بیش از یک آیتم دارن رو بره و بیاره، با چه متودی؟ ()whereJsonLength 🟩

یا در مثال دوم:
همه ی کاربرانی که آرایه ی languages براشون دارای en و de هست رو برامون بیار،
متود: ()whereJsonContains🟩

@GoldenCodeir
(مثال بیشتر و سایر نکاتُ متود ها در منبع:👇🏾)
https://x.com/OussamaMater/status/1763557742273290670?t=5_H-7BcfmcaXXCe8R-7c_A&s=35
👍43💯3
📌" در php برای اینکه متغیرمون رو در صورت null بودن براش مقداره پیشفرضی تعیین کنیم میتونیم از دستوره مختصرِ "=?? " هم استفاده کنیم👌🏾
چجوری ؟؟

➕️ همونطور که در تصویر منبع مشاهده میکنید ، درصورتیکه متغیره user فاقدِ name باشد خودمون براش guest رو تعیین میکنیم " 🪴🌴

@GoldenCodeir
(برای درک بهتر به منبع توجه کنین👇🏾)
https://x.com/AshAllenDesign/status/1763575121141215548?t=uRRaPfqZsnux2TTmxNLjdA&s=35
👍92👏2💯1
"از سری متود هایی که توو ورژن های اخیر اضافه شده بودن whereAll و whereAny هستش، خب روش های استاندارد تری برای کوئری زدن به حساب میان، در clean code هم همونطور که میبینین تاثیرِ ملموسی داره✔️

خب حالا بریم سراغ مفهومِ کوئری های مذکور:
📌متودِ ()whereAny :
یوزر هایی که first_name یا last_name طبقِ ریکوئست هست رو بیار.

📌متودِ ()whereAll :
یوزر هایی که مطابقِ ریکوئست هست بخشِ first_name‌ و last_name رو بیار."🪴🌴
@GoldenCodeir
(‌من فقط به دوتاش مقداری اشاره کردم،کاملترش و ورژن هایی ک ساپورت میکنن در منبع👇🏾)
https://x.com/OussamaMater/status/1765347246059458628?t=ZpqqQQyFrM88I5CVenL1jA&s=35
5💯2👍1
"در eloquent حتی میتونیم از متود های save و همچنین متود saveMany برای اضافه کردنه مدل های جدید به relations استفاده کنیم، اینا هم خب از متود هایه پر کاربردن👌🏾

طریقه ی استفادشون هم سادس و تنها نکتشون هم همینه (همونطور که احتمالن میدونین) باید : آرایه پاس داد به saveMany "
@GoldenCodeir
به منبع و تصویر‌ش دقت کنین🪴🌴

https://x.com/iamgurmandeep/status/1764765303123095681?t=WPC2s01Zrj6TakzzFQZ2WQ&s=35
👍63🙏2
"ممکنه بعضی اوقات برای یه متغیرِ string نیاز به انجام چنتا تبدیل داشته باشیم.
در این شرایط یکی از روش ها اینه که عملیاتی زنجیره ای طراحی کنیم با استفاده از هلپره ()str ✔️

خب چجوری کار میکنه؟
سادس،کافیه استرینگ رو به هلپر تحویل بدیم،
📌 به مثال توجه کنین، این استرینگه ما در هلپره ()str از سه فیلتر(عملیات) عبور کرد و خروجیه مدنظرمون رو تحویل داد" ! 🌴🪴

@GoldenCodeir
به منبع و تصویرش توجه کنید👇🏾)
https://x.com/PovilasKorop/status/1767502048742760544?s=35
👍91
"میتونیم resources controller هامونو با استفاده از متودی به نام ()resources گروه بندیشون کنیم(بصورت گروهی ایجاد کنیم).
طبیعتن در clean code تاثیره خودشو میزاره🌴🪴"

(در نظر داشته باشین که متود resource بصورته آرایه route رو تحویل میگیره )
@GoldenCodeir
📌به منبع و تصویرش توجه کنین تا تفاوت استفاده از این متود و عدم استفاده ازش رو بهتر حس کنین:)👇🏾
https://x.com/OussamaMater/status/1765047738423501309?s=09
4👍1🔥1
"برای ایمپورته کلاسهای php به محیطه blade ، علاوه بر تگ های php خام میتونیم از دایرکتیو ()use@ هم استفاده کنیم ✔️ "

(اگر هم چیزه زیادی از دایرکتیو و حتی چگونگیه ایجاد دایرکتیو نمیدونین این مقاله ی فارسیه هم مفیده براتون:🪴🌴
https://roocket.ir/articles/creating-the-route-blade-directive )

@GoldenCodeir
(📌به منبع و تصویرش توجه کنین تا چگونگیه استفاده ازش رو متوجه شین👇🏾)
https://x.com/iamgurmandeep/status/1768346217258315930?t=qi5Fb8N4oyG_TTclNxOaNg&s=35
👍32
"کالکشن ها متودای متعدد و متفاوتی دارن.
اما اگه خواستین متود های شخصی برای خودتون ایجاد کنین ، میتونید این کارو با استفاده از macro به راحتی انجام بدین✔️

📌 کار پیچیده ای پیش رو ندارید،
فقط متود رو داخل AppServiceProvider تعریف می کنید و بعد میتونید ازش در هرجای کد هاتون که خواستید استفاده کنید..".🌴🪴
@GoldenCodeir
(پیچیده نیس،به منبع و تصویرش توجه کنین تا کاملن براتون جا بیفته👇🏾)
https://x.com/PovilasKorop/status/1767864437891878980?t=7RFF35yqEY5lNOmQDmTfSg&s=35
👍52
"میتونیم از متود ()whenMissing برای ریکوئست آبجکت استفاده کنیم که در صورت عدم وجود اون ورودی فراخوانی میشود.🌴🪴

توضیحاته تکمیلی:
کاربردش فقط محدودبه این مثال نمیشه،یکی از جاهایی که احتمالن به کارمون میاد در routeها هستش✔️"
@GoldenCodeir
(به منبع و مثالش توجه کنین ، در صورت فراخوانیه WhenMissing عملیاته مربوطه اجرا میشه👇🏾)

https://x.com/iamgurmandeep/status/1764380757294789081?t=vGONcoP-tZu59dFxwq79JQ&s=35
👍41