Golden Code – Telegram
Golden Code
738 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
در تابع dirname می‌توان آرگومان دوم نیز مشخص کرد که به وسیلش میشه تعیین کرد تا کدوم سطح از دایرکتوری واسمون پیش بره.
بصورت پیشفرض سطح ۱ رو میاره🪴🌴


https://twitter.com/enunomaduro/status/1699458486243856440?t=KKUNrt-FjIYDxaIhZpMEZQ&s=19


@golden_code_ir
👍2
میشه با استفاده از متودِ"from"مشخص کرد که شروعِ Id دِهی هامون از چه عددی انجام بشه(اگه قصد استفاده از auto increment داشته باشیم)🌴🪴

@golden_code_ir

https://twitter.com/iamgurmandeep/status/1750617519163929021?t=IkwlF1fA2z7uteKCW1bUFw&s=19
👍4
متودی هم داریم تحت عنوان()updateOrCreate که دو عملیات رو در یک عملیات ترکیب میکنه واسمون، استفاده ازش میتونه برای کوتاه شدنه کد هامون بَسی مفید واقع شه! 🪴🌴


@golden_code_ir
(اگه واستون مفید بود با دوستاتون هم به اشتراک بزارین 🍀)
https://twitter.com/PovilasKorop/status/1751919371042144444?t=ZDAqQnsAeEhzRJPZ6Z0M9Q&s=19
👍2
از دیگر متود ها و helper های پرکاربرد، ()latest و ()oldest در Elequent هستند،
روش هایی مختصر جهتِ سفارشِ درخواست هامون🪴🌴

@golden_code_ir
به مثال زیر توجه کنین
https://twitter.com/PovilasKorop/status/1750832209408168236?t=yrbCsMI3snZRJAdBv-VDDQ&s=19
👍3
میشه از ()withDefault در ()belongsTo استفاده کرد تا از وقوعِ خیلی از خطاهای روو مخ جلوگیری شه،
یعنی بطور پیش فرض میشه واسش یک دیتایی رو سِت کنیم،تا اگه مثلن دیتایی که از دیتابیس خواستن، وجود نداشت! خطا رخ نده و دیتای پیشفرضمون (withDefualt)به عنوان خروجی داده شه.
به مثال توجه کنین:🪴🌴

@golden_code_ir

https://twitter.com/PovilasKorop/status/1753368922345046386?t=TK4SBAijQtgo__ntF-_v0Q&s=19

همچنین در اینجا هم خوب توضیح دادن:
https://roocket.ir/discuss/%D9%85%D8%AA%D8%AF-withDefault-%DA%86%DB%8C%D8%B3%D8%AA
👍1
اگه حس میکنی زیاد بودنه تعداد کوئری ها باعث کاهش سرعت سایت شده، میتونی از Cache استفاده کنی،به تصویر توجه کنین،
به عنوانه ورودیه دوم، عددِ ۳۶۰۰ رو پاس دادیم که زمان انقضا(مدتِ اعتبارِ اون کَش رو مشخص میکنه)🍀
با استفاده ازین روش عملیات ذخیره سازیه موقت ایجاد میشه و باعث میشه تعداد کوئری ها کمتر شه! 🪴🌴

@GoldenCodeir

https://twitter.com/laravelbackpack/status/1700907063122018671?t=6f4T61oun1x5VBLp1eY6Mw&s=19

اینم سایت هم قوی توضیح داده:🔥
https://ditty.ir/posts/laravel-cache-101/JA0VX
👍4
در 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