Golden Code – Telegram
Golden Code
738 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
"در لاراول متودی هم داریم تحتِ عنوان 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
"با Str::password میتونید یک پسورد امن و رندوم ایجاد کنین. رمز عبورمون با ترکیبی از حروف، اعداد ،نماد ها و فاصله ها شکل میگیره .✔️

📌نکته ی اصلی ای ‌که باید بهش اشاره کرد:
بطور پیشفرض پسورد ها ۳۲ کارکتر خواهند داشت.
به مثال نگاه کنین ، در مثاله اول پسوردی ۳۲ کارکتری تحویل داد(دیفالت)"🌴🪴
در مثال دوم هم تعداد کارکتر ۱۲ قرار داده شد"
@GoldenCodeir
(به منبع و مثالش توجه کنین👇🏾)
https://x.com/iamgurmandeep/status/1762570986904310249?t=lvgXfC0_SARIcvufbQVqDg&s=35
👍51
"در ولیدیشن میتونیم از "required_if_accepted" استفاده کنیم که تضمین میکنه در صورته پذیرفته شدنه یه فیلد، فیلده تحته اعتبارسنجی پر کردنش اجباریه.✔️
گیج نشین 😁
به مثال که توجه کنین به خوبی متوجه میشین،
در مثال یک:
درصورتی company_name رو اجباری کن که is_company برابره true باشه... "
@GoldenCodeir
📌(به منبع و مثالش دقت کنین👇🏾)
https://x.com/iamgurmandeep/status/1763678793510568388?t=bSs19il9kcLM3m508NUKww&s=09
👍10👏1
"علاوه بر متود ()findOrFail میتونیم از متود ()findOr هم استفاده کنیم که در پاسخ یا یک instance از مدل رو برمیگردونه واسمون یا اگه پیدا نشد کاری که از پیش واسش تعیین کردیم‌رو اجرا میکنه."

به مثال دوم دقت کنین، اگر اون id مدنظرمون رو پیداکنه واسمون میاره ، در غیر اینصورت Not Found رو نمایش میده(همونطور که ازش خواستیم ).🌴🪴
@GoldenCodeir
(به منبع و مثال دقت کنین👇🏾)
https://x.com/iamgurmandeep/status/1755594486691086669?s=20
👍9🔥1
"لاراول متودی هم داره تحت عنوان ()withExists که این امکان رو در اختیارمون میزاره تا بتونیم به بررسی وجود یا عدم وجود relation بین مدل ها بپردازیم.
📌 برخی مزایای این متود بطور خلاصه :

در بهبود performance و همچنین مفهوم clean code نقش موثری داره".✔️

نکته:پاسخ این متود بصورتboolean خواهد بود.
در پاسخ is_author در مثال زیر یک نتیجه true یا false دریافت میکنیم.🌴🪴
@GoldenCodeir
(به منبع و مثالش توجه کنین👇🏾)
https://twitter.com/OussamaMater/status/1770520181132968014?t=7ntUBWOzvHiZJ21BjwfXpQ&s=19
👍7🔥1
"در api میتونین تعداد ریکوئست هایی که کاربر میتونه ارسال کنه در یک بازه ی زمانی رو واسش محدودیت ایجاد کنین.✔️

در مثال زیر، منظور از '60,1:throttle' چیه؟
با قراردادنه این دستور تعیین میشه هر کاربر در یک دقیقه میتونه نهایتن ۶۰ ریکوئست ارسال کنه.
اینکار تا حدی میتونه از سو استفاده های احتمالیه برخی کاربران جلوگیری کنه."🌴🪴
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/laravelbackpack/status/1702280355552661534?s=35
👍7👏1
"هلپرهایی هم داریم تحت عنوانthrow_if و throw_unless که استفاده ازشون در کلین کد میتونه مفید باشه.بریم ببینیم چه جاهایی کاربرد داره.

در مثال سه با استفاده از هلپر throw_unless گفته شده‌ اگر کاربر admin نبود اون exception رو اجرا کن.🌴🪴
در مثال دو(throw_if)هم همون خروجیه مثال بالا دریافت میشه با این تفاوت که نقیضش بررسی میشه.
که خب خواناییه کد رو نسبت به شرط گذاریه عادی بالاتر برده...👌🏾"
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/OussamaMater/status/1771604644692734425?t=RaBarVLAzRsdxBusP1RHPQ&s=35
👍74