| کانال توسعهدهندگان لاراول |
Ir al canal en Telegram
⭕️ کانال توسعهدهندگان لاراول دولوپیکس 💠 دولوپیکس | جامعه توسعهدهندگان ایرانی 💎 @Developix 🚀 Developix.ir 📌 پشتیبانی و تبلیغات: @DevelopixSupport
Mostrar más1 540
Suscriptores
+124 horas
+27 días
-230 días
Archivo de publicaciones
شکار کوئریهای اضافه در لاراول 🔎
صفحهٔ فهرست مقالهها درست کار میکند، اما با زیادشدن دادهها کند میشود. یکی از متهمهای همیشگی، مشکل
N+1 است: مقالهها با یک کوئری میآیند، ولی دسترسی به نویسندهٔ هر مقاله، کوئری تازهای اجرا میکند.
مثلاً وقتی داخل حلقهٔ Blade از $post->author->name استفاده میکنی، اگر رابطه از قبل بارگذاری نشده باشد، Eloquent آن را همان لحظه از دیتابیس میخواند. برای ۵۰ مقاله، ممکن است ۵۱ کوئری اجرا شود!
🛠 مشکل را موقع توسعه آشکار کن
در فایل app/Providers/AppServiceProvider.php، این تنظیم را به متد boot اضافه کن. اگر متد از قبل کد دارد، فقط خط تنظیم را به آن اضافه کن؛ متد تکراری نساز.
use Illuminate\Database\Eloquent\Model;
public function boot(): void
{
Model::preventLazyLoading(
! $this->app->isProduction()
);
}
حالا در محیط غیر production، دسترسی به رابطهای که از قبل بارگذاری نشده، بهطور پیشفرض خطای LazyLoadingViolationException ایجاد میکند؛ یعنی مشکل بهجای پنهانشدن تا روز انتشار، هنگام توسعه دیده میشود.
⚡ راه اصلاح چیست؟
در کوئری کنترلر، رابطه را با Eager Loading بگیر: Post::with('author')->get()؛ البته به شرطی که مدل تو رابطهٔ author داشته باشد. در حالت معمولِ رابطهٔ belongsTo، مقالهها و نویسندههایشان با دو کوئری دریافت میشوند، نه یک کوئری برای هر ردیف.
نکتهٔ مهم: این تنظیم خودش کوئریها را بهینه نمیکند؛ فقط دسترسی ناخواسته به رابطه را آشکار میکند. رابطههایی را بارگذاری کن که واقعاً در خروجی لازماند، نه همهٔ رابطههای مدل را.
📚 مستندات رسمی لاراول
این تنظیم کوچک را روی یک صفحهٔ فهرست امتحان کن؛ نقطهٔ شروع خوبی برای پیدا کردن کوئریهای پنهان است. 🌱
🔖 #Laravel #PHP #لاراول #Laravel #Eloquent #N+1 #Eager_Loading
👤 Developix
💎 Channel: @DevelopixLaravelروابط پایگاه داده یک به چند یا Eloquent on of many در لاراول - قسمت اول
در بخش اول این آموزش، به بررسی و پیادهسازی رابطه One of Many در ORM الکوئنت لاراول میپردازیم. این رابطه که حالتی پیشرفته و کاربردی از روابط یک به چند است، به شما امکان میدهد تا تنها به یک رکورد خاص از میان رکوردهای مرتبط دسترسی پیدا کنید؛ مثل پیدا کردن آخرین سفارش یک مشتری یا گرانترین محصول یک دستهبندی. در این ویدیو با سینتکس و کاربردهای عملی این ابزار قدرتمند به صورت گام به گام آشنا میشوید.
https://www.aparat.com/v/mnmiwr5
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
حفاظت از پردازش ها با Laravel Rate Limiter بخش پنجم - تغییر زمان انقضا
در پنجمین بخش از مجموعه آموزشی حفاظت از پردازش ها با لاراول ریت لیمیتر، به سراغ نحوه تغییر و شخصی سازی زمان انقضا و محدودیت درخواست ها می رویم. در این ویدیو یاد می گیرید چگونه زمان بازنشانی و انقضای محدودیت ها را در پروژه های لاراول مدیریت کنید تا امنیت و پایداری سرور و اپلیکیشن خود را بهبود ببخشید. این مبحث برای توسعه دهندگان وب بسیار کاربردی است.
https://www.aparat.com/v/jbb76v2
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
🔥 پکیج: مدیریت CORS در لاراول
اگر فرانتاند و API روی دامنههای متفاوتاند، تنظیم درست CORS ضروری است. پکیج Laravel CORS از Fruitcake برای افزودن هدرهای CORS به لاراول ساخته شده و امکان تنظیم مبدأها، متدها و هدرهای مجاز را میدهد.
نکتهٔ مهم برای نگهداری پروژههای قدیمی: این پکیج دیگر نگهداری نمیشود؛ در نسخههای جدید لاراول از Middleware داخلی
HandleCors استفاده کنید، نه نصب دوبارهٔ آن.
برای شناخت تنظیمات و مسیر مهاجرت، مستندات پکیج را مرور کنید.
📥 دانلود: 125,498,274
⭐️ 6,235 علاقهمند
🔖 #Laravel #PHP #لاراول #Laravel #CORS
💎 @DevelopixLaravelRepost from N/a
🚀 اجرای ربات تلگرامی در لوکالهاست!
LaraGram API Server یک پیادهسازی از Telegram Bot API Server با زبان PHP و مبتنی بر LaraGram MTProto است که امکان اجرای سرور اختصاصی Bot API تلگرام را بدون نیاز به بیلد کردن نسخه رسمی telegram-bot-api و وابستگی به سرویسهای تونلسازی مانند ngrok فراهم میکند.
⚙️ معماری و نحوه عملکرد
این پروژه با استفاده از پروتکل MTProto و ایجاد یک لایهی سازگار با Telegram Bot API، درخواستهای استاندارد رباتهای تلگرامی را پردازش میکند.
LaraGram API Server بهعنوان یک جایگزین سازگار با سرور رسمی Telegram Bot API طراحی شده است؛ بنابراین، رابط HTTP، ساختار پاسخها، پیامهای خطا و متدهای Bot API را پشتیبانی میکند و میتواند بدون وابستگی به فریمورک LaraGram، در کنار کتابخانههای رباتنویسی در زبانهای مختلف مورد استفاده قرار بگیرد.
✨ قابلیتهای کلیدی
سازگاری با Bot API رسمی: پشتیبانی از تمام متدهای Telegram Bot API و سازگاری با ابزارها و کتابخانههای موجود.
بدون نیاز به بیلد دستی: نصب مستقیم از طریق Composer، بدون نیاز به کامپایل سورس کد سرور رسمی تلگرام.
اجرای مستقل و لوکال: امکان اجرای سرور روی لوکالهاست یا زیرساخت اختصاصی.
پشتیبانی از Local Mode: امکان آپلود فایل تا حجم ۲۰۰۰ مگابایت، دانلود فایل بدون محدودیت حجم و استفاده از مسیر محلی فایلها.
پشتیبانی از Webhook: امکان استفاده از IP و پورت دلخواه برای دریافت آپدیتها و پیکربندی اتصالات Webhook.
مدیریت و مانیتورینگ: پشتیبانی از گزارشگیری، ثبت لاگ و مشاهده آمار درخواستها، آپدیتها و مصرف منابع.
آماده برای محیط Production: قابلیت اجرا بهصورت سرویس پایدار با ابزارهایی مانند systemd.
📦 نصب و راهاندازی
پیشنیازهای اصلی شامل PHP 8.3 یا بالاتر، افزونه Swoole و افزونههای JSON و Mbstring است.
نصب سراسری پکیج تنها با اجرای دستور زیر انجام میشود:
composer global require laraxgram/apiserverپس از دریافت api_id و api_hash از پنل توسعهدهندگان تلگرام، میتوانید سرور را اجرا کنید:
laragram-server --api-id=YOUR_API_ID --api-hash=YOUR_API_HASH --local
همچنین امکان نصب پکیج بهصورت وابستگی پروژه و استفاده مستقیم از آن در اکوسیستم LaraGram وجود دارد.
📚 مستندات و راهنمای کامل
برای مشاهده پیشنیازها، تنظیمات، گزینههای اجرایی، نحوه استفاده در LaraGram، مدیریت فایلها و راهاندازی Production، مستندات رسمی پروژه را مطالعه کنید:
🔗 https://laraxgram.github.io/v4/apiserver
و در نهایت با استار دادن به گیتهاب پروژه و معرفی به دیگران از اون حمایت کنید:
🔗 https://github.com/laraXgram/APIServer
@LaraXGram
@LaraGramChatFa
🔖 #TelegramBot #ربات #تلگرام
💎 Channel: @DevelopixRobot🛠 فیلترهای API را تمیزتر بنویس
وقتی لیست کاربران فیلتر، مرتبسازی و صفحهبندی میخواهد، شرطهای تکراری زود زیاد میشوند. پکیج Spatie Laravel Query Builder پارامترهای درخواست را به کوئری Eloquent تبدیل میکند؛ با فهرست مجاز مشخص میکنی چه فیلدهایی قابل استفادهاند.
✨ فیلتر و مرتبسازی مجاز، بارگذاری رابطهها با include و سازگاری با صفحهبندی لاراول.
نصب:
composer require spatie/laravel-query-builderنمونه در کنترلر:
use App\Models\User;
use Spatie\QueryBuilder\QueryBuilder;
return QueryBuilder::for(User::class)
->allowedFilters('name')
->allowedSorts('created_at')
->paginate(15);
با ?filter[name]=ali&sort=-created_at نام فیلتر میشود و جدیدترینها اول میآیند. فیلتر پیشفرض رشتهای، تطبیق جزئی است؛ برای تطبیق دقیق از AllowedFilter::exact() استفاده کن.
📚 مستندات رسمی
🌱 روی یک endpoint کوچک امتحانش کن؛ تفاوت در خوانایی کد ملموس است.
🔖 #Laravel #PHP #لاراول #Laravel #PHP #API #Eloquent
👤 Developix
💎 Channel: @DevelopixLaravelحفاظت از پردازش ها با Laravel Rate Limiter بخش چهارم - بررسی شماتیک سرویس
در بخش چهارم آموزش مدیریت درخواستها با Laravel Rate Limiter، به بررسی عمیق و شماتیک نحوه حفاظت از پردازشها در لاراول میپردازیم. کنترل ترافیک و جلوگیری از ارسال درخواستهای تکراری یا مخرب، نقش مهمی در پایداری و امنیت وبسرویسها دارد. در این ویدئو سه پارامتر کلیدی یعنی Key برای شناسایی درخواستدهنده، maxAttempts برای تعیین حداکثر تعداد تلاش مجاز و decaySeconds برای تنظیم مدتزمان بازنشانی محدودیت را به شکل دقیق و مفهومی تحلیل میکنیم. با مشاهده این آموزش با معماری داخلی سرویس محدودکننده لاراول و نحوه بهینهسازی پردازشهای سنگین آشنا میشوید.
https://www.aparat.com/v/jbnjus1
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت دوم
در بخش دوم از آموزش روابط چند ریختی (Eloquent Polymorphic Relations) در فریمورک لاراول، پیادهسازی عملی این ارتباطات کاربردی را بررسی میکنیم. روابط پلیمورفیک به مدلهای دیتابیس اجازه میدهند بدون نیاز به جدولهای واسط اضافی، با چندین مدل مختلف ارتباط برقرار کنند. در این ویدئو به نحوه تعریف ساختار جداول، متدهای ارتباطی در مدلها، مایگریشنهای لازم و متد morphTo و morphMany میپردازیم. اگر به دنبال پیادهسازی قابلیتهایی مثل سیستم کامنتگذاری، لایک یا تگ برای چند بخش مختلف پروژه لاراول خود هستید، این آموزش به شما در پیادهسازی بهینه و استاندارد دیتابیس کمک میکند.
https://www.aparat.com/v/zzb288a
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول
در لاراول، روابط چندریختی (Eloquent Polymorphic Relationships) یکی از ویژگیهای قدرتمند ORM است که اجازه میدهد یک مدل با چند مدل دیگر از نوعهای متفاوت، از طریق یک رابطه مشترک، ارتباط برقرار کند. این مفهوم به جای ساخت چند جدول واسط متفاوت، از یک جدول یکتا برای نگهداری شناسه و نوع مدل مرتبط استفاده میکند. مثلاً جدول نظرات (comments) میتواند هم به پستها و هم به ویدیوها تعلق داشته باشد، بدون نیاز به تعریف چند رابطه مجزا. در این قسمت، ابتدا منطق کار و ساختار پایگاه داده روابط چندریختی را بررسی میکنیم و سپس مراحل تعریف مدلها و کلیدهای ارتباطی را توضیح میدهیم تا درک دقیقی از این ساختار انعطافپذیر در Eloquent ایجاد شود.
https://www.aparat.com/v/lonzgac
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
مدیریت همزمانی و قفلگذاری روی پردازشها در لاراول (Laravel Atomic Locks)
در بخش چهارم از این مجموعه آموزشی، به بررسی نحوه استفاده از Atomic Lockها در فریمورک لاراول جهت جلوگیری از اجرای همزمان پردازشهای حساس و مدیریت بهینه Race Condition پرداخته شده است.
برای مشاهده کامل ویدیو، از لینک زیر استفاده کنید:
https://www.aparat.com/v/jaw0nx0
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
🔥 پکیج: ورود با حسابهای دیگر؛ Socialite
برای اضافهکردن ورود با حسابهای دیگر به پروژه لاراولی،
Socialite مسیر سرراستی است. این پکیج، کتابخانههای OAuth 1 و OAuth 2 را در قالبی سازگار با لاراول در اختیارت میگذارد و کارِ هدایت کاربر به سرویسدهنده و دریافت اطلاعات او پس از بازگشت را سادهتر میکند.
اگر مشغول ساخت صفحه ورود هستی، مستندات و درایورهای پشتیبانیشدهاش را ببین؛ شاید همان چیزی باشد که لازم داری.
📥 دانلود: 123,728,494
⭐️ 5,837 علاقهمند
🔖 #Laravel #PHP #لاراول #لاراول #Socialite
💎 @DevelopixLaravel🔒 فقط دادههای تأییدشده را ذخیره کن
وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاوه بر نام، فیلدی مثل
is_admin هم بفرستد. اگر ورودی خام را مستقیم به مدل بدهی، مرز میان دادههای مجاز و نامجاز مبهم میشود.
در لاراول، برای چنین فرمهایی از FormRequest استفاده کن و موقع ذخیره فقط خروجی validated() را بگیر. این متد فقط فیلدهایی را برمیگرداند که در قوانین اعتبارسنجی تعریف شدهاند؛ بنابراین فیلد اضافی درخواست وارد این آرایه نمیشود. 👇
$data = $request->validated();
$user->update($data);
این نمونه فرض میکند $request یک FormRequest است و در متد rules() آن فقط فیلدهای قابلویرایش، مثل name، تعریف شدهاند. برای امنیت بیشتر، تنظیمات fillable مدل را هم محدود نگه دار؛ اعتبارسنجی جای محافظت در برابر Mass Assignment را نمیگیرد.
✨ دفعهی بعد که یک فرم ویرایش میسازی، مسیر داده از درخواست تا update() را بررسی کن و این الگو را امتحان کن.
📚 مستندات رسمی لاراول: دادههای اعتبارسنجیشده
🔖 #Laravel #PHP #لاراول #Laravel #FormRequest #Validation #MassAssignment
👤 Developix
💎 Channel: @DevelopixLaravelحفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی
در قسمت سوم از مجموعه آموزش حفاظت از پردازشها در لاراول، به سراغ نحوه پیکربندی اصولی Rate Limiter میرویم. تنظیم محدودیت نرخ درخواستها یا Rate Limiting یکی از موثرترین راهکارها برای جلوگیری از سوءاستفاده، حملات بروت فورس و کنترل بار کاری روی پردازشهای پسزمینه و صفها در فریمورک لاراول است.
در این جلسه یاد میگیرید چگونه کانفیگهای مربوط به Rate Limiter را تعریف کنید و رفتار آن را متناسب با نیازهای پروژه و منابع سرور هماهنگ سازید. تسلط بر پیکربندی این بخش به شما امکان میدهد پایداری سرویس را در زمان ترافیک سنگین تضمین کنید و پردازشهای حساس را در بستری امن و کنترلشده اجرا نمایید. اگر قصد بهینهسازی و ارتقای امنیت معماری نرمافزار خود در لاراول را دارید، این ویدئو برای شماست.
https://www.aparat.com/v/rgb7ohp
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
Repost from N/a
🚀 LaraGram Brain منتشر شد!
از این به بعد برای ساخت رباتهای تلگرام با فریمورک LaraGram، لازم نیست حتماً خودتون دست به کد بشید؛ یا حتی با توسعه ربات تلگرامی آشنا باشید!
کافیه ایده و توضیحات پروژهای که میخواید رو به یک ایجنت هوشمصنوعی بدید و باقی کار رو به خودش بسپارید. 🤖
LaraGram Brain یک MCP Server برای فریمورک LaraGram هست که مجموعهای از ابزارها و اسکیلها رو در اختیار ایجنتهای هوشمصنوعی قرار میده تا بتونن پروژه رو بهتر بشناسن، پیادهسازی کنن، تست بگیرن و حتی مشکلاتش رو بررسی کنن.
از جمله امکاناتش:
• اجرای متدهای تلگرام در محیط Sandbox بدون ارسال واقعی
• دسترسی به Schema و مستندات Telegram
• بررسی ساختار و Queryهای دیتابیس
• مشاهده Logهای برنامه
• جستوجو در مستندات LaraGram
• Skillهای مربوط به Bot، MTProto، TMA و Web Pages
فرقی نمیکنه پروژهتون یه ربات ساده باشه یا یک پروژه پیچیده با MTProto و TMA؛ توضیحاتش رو به ایجنت بدید و اجازه بدید کار رو خودش انجام بده.
لینک پروژهها:
🧩 LaraGram
🧩 Brain
🔖 #TelegramBot #ربات #تلگرام
💎 Channel: @DevelopixRobot
حفاظت از پردازشها با Laravel Rate Limiter (متد attempt)
در این ویدیو به بررسی نحوه مدیریت نرخ درخواستها و اعمال محدودیت روی توابع یا بلوکهای اجرایی کد با استفاده از متد RateLimiter::attempt در فریمورک لاراول پرداخته شده است.
برای مشاهده کامل ویدیو، از لینک زیر استفاده کنید:
https://www.aparat.com/v/irg190v
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
این کد یه دستور کنسول لاراوله که قراره هر ۵ ثانیه یهبار یه کار انجام بده. اما توی سرور واقعی، بعد از چند ساعت رم میترکه و پروسه میمیره.
به نظرت مشکل این کد کجاست و چطور درستش میکنی؟
🔖 #Laravel #PHP #لاراول
👤 Developix
💎 Channel: @DevelopixLaravel
حفاظت از پردازش ها با Laravel Rate Limiter بخش اول - معرفی
در این ویدیو به بررسی مفهوم Rate Limiting در فریمورک لاراول، نحوه جلوگیری از حملات Brute Force و فشار بیش از حد بر سرور، و همچنین کاربردهای عملی آن در مدیریت درخواستها و APIها پرداخته شده است.
برای مشاهده کامل ویدیو، از لینک زیر استفاده کنید:
https://www.aparat.com/v/aotg9e4
🔖 #Laravel #PHP #لاراول
👤 ابوالفضل
💎 Channel: @DevelopixLaravel
🔥 پکیج: اینرشیا لاراول (Inertia.js)
کتابخانه Inertia.js با این آداپتور رسماً توی لاراول خانهبهدوش نمیماند 😄
با پکیج Inertia Laravel میشود SPA ساخت، بدون اینکه API جدا با JSON و نسخهبندی بسازی؛ همان کنترلرهای Blade را نگه میداری، فقط خروجی را به کامپوننتهای Vue / React / Svelte وصل میکنی.
امکاناتی مثل shared props، partial reload و lazy props هم آماده است.
برای جزئیات بیشتر و نصب:
مستندات پکیج را ببین و در پروژه بعدی امتحانش کن 🚀
📥 دانلود: 73,092,315
⭐️ 2,479 علاقهمند
🔖 #Laravel #PHP #لاراول #لاراول #Inertia_js
💎 @DevelopixLaravel
در خیلی از پروژههای لاراول، منطق اعتبارسنجی مستقیم داخل کنترلر نوشته میشود و کمکم کنترلر تبدیل به یک هیولای چندصد خطی میشود 😅
یکی از تمیزترین راهها در معماری لاراول استفاده از Form Request برای جدا کردن منطق Validation است.
🧩 Form Request چیست؟
کلاسی است که از
Illuminate\Foundation\Http\FormRequest ارثبری میکند و تمام قوانین اعتبارسنجی، مجوزها و گاهی پیامهای خطا را در خودش نگه میدهد.
🎯 مزایا:
• کنترلرهای کوتاه و خوانا ✨
• قابلیت تستپذیری بهتر
• استفادهٔ مجدد از قوانین بین چند اکشن
• جداسازی واضح لایهٔ HTTP از بیزینسلاگیک
✅ مثال قبل و بعد
نمونهٔ کنترلر شلوغ:
public function store(Request $request)
{
$data = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8',
]);
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
return redirect()->route('users.index');
}
حالا همان منطق با Form Request تمیزتر میشود 👇
۱️⃣ ساخت Form Request
php artisan make:request StoreUserRequest
فایل ساختهشده را در مسیر app/Http/Requests/StoreUserRequest.php ویرایش کن:
class StoreUserRequest extends FormRequest
{
public function authorize(): bool
{
return true; // یا چکهای policy/permission
}
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email', 'unique:users,email'],
'password' => ['required', 'string', 'min:8'],
];
}
}
۲️⃣ سادهسازی کنترلر
حالا کنترلر فقط ورودی تمیز را تحویل میگیرد:
public function store(StoreUserRequest $request)
{
$data = $request->validated();
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
return redirect()->route('users.index');
}
👌 چند نکتهٔ کاربردی
• برای API میتوان از متد failedValidation در Form Request برای برگرداندن JSON استاندارد استفاده کرد.
• قوانین مشترک بین چند فرم را میتوان در یک Form Request پایه قرار داد و بقیه را از آن ارثبری داد.
• پیامهای خطای سفارشی را داخل متد messages تعریف کن تا متن خطاها از کنترلر جدا بماند.
برای جزئیات بیشتر، مستندات رسمی لاراول منبع خیلی خوبی است:
لینک مستندات Form Request
در پروژهٔ بعدی، فقط یک بار Form Request را راه بینداز؛ بعد از آن سخت میشود دوباره به کنترلرهای شلوغ برگردی 🚀
🔖 #Laravel #PHP #لاراول #Laravel #Form_Request #Validation #Clean_Code #PHP
👤 Developix
💎 Channel: @DevelopixLaravel
سوال چالشبرانگیز لاراول (خروجی Collection):
خروجی اجرای این کد در لاراول چیست؟
جواب را دقیقا همانطور که در خروجی نهایی چاپ میشود بنویسید (شامل ساختار آرایه/JSON).
🔖 #Laravel #PHP #لاراول
👤 Developix
💎 Channel: @DevelopixLaravel
