کانال آموزشی لاراول
Статистика📌 کانال اتاق برنامه نویسی @PapiDon_coding
- Последний пост
- 9 авг. 2025 г.
- Последнее чтение
- 14 авг.
- Постов за неделю
- 0
- Всего постов
- 20
- Тип
- открытый
- Язык
- персидский
- Категория
- Образование
- В каталоге с
- 13 авг.
- 1/24сутки в ленте
- —
- 1/48двое суток
- —
- 1/72трое суток
- —
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
🚀 Livewire 4: نسل جدید کامپوننتهای PHP در Laravel در Laracon امسال، Caleb Porzio از Livewire 4 رونمایی کرد؛ نسخهای که سه روش پراکندهٔ ساخت کامپوننتها (سنتی، Volt فانکشنال، Volt کلاسمحور) را یکپارچه کرده، سرعت را بالا برده و تجربه توسعهدهنده را ارتقاء داده. ویژگیهای کلیدی و نمونه کد: 🔹 کامپوننتهای تکفایلی با دستور: php artisan make:livewire counter یک کامپوننت کلاسمحور تکفایلی میسازد که HTML، PHP و JavaScript را کنار هم دارد: new class extends Component { public $count = 1; public function increment() { $this->count++; } public function decrement() { $this->count--; } }; <div> <h1>{{ $count }}</h1> <button wire:click="increment">+</button> <button wire:click="decrement">-</button> </div> 🔹 داخلی JavaScript بدون نیاز به @script`، با `this. به state دسترسی داری: <script> this.watch('count', value => console.log('Count:', value)); </script> 🔹Interceptors مدیریت اجرای متدها قبل از اجرا: this.intercept('increment', ({ proceed, cancel }) => { if (confirm('Are you sure?')) proceed(); else cancel(); }); 🔹 کامپوننتهای چندفایلی (MFC) با: php artisan make:livewire counter --mfc سه فایل PHP`، `Blade و JS مجزا ساخته میشود. ساختار پوشههای جدید: * resources/views/components/ → همه کامپوننتها * resources/views/pages/ → صفحات * resources/views/layouts/ → قالبها ویژگیهای PHP 8.4 در Livewire 4: Setter/Getter برای کنترل و محاسبه: public int $count { set => max(1, $value); } public int $multiple { get => $this->count * 5; } کش داخلی در property hooks: public string $expensiveData { get => cache()->remember("data-{$this->id}", 3600, fn()=> $this->fetchData()); set => cache()->put("data-{$this->id}", $value, 3600); } بهبود UI و تجربه کاربری: Loading State خودکار: <button wire:click="save" class="data-[loading]:opacity-50">Save</button> Slots همانند Blade: <livewire:modal>{{ $slot }}</livewire:modal> wire\:ref برای ارتباط مستقیم بین کامپوننتها: $this->dispatch('close')->to(ref: 'modal'); Blaze — بهینهسازی Blade پیشپردازش بخشهای ثابت برای افزایش سرعت: <x-card> <x-slot:title>{{ $title }}</x-slot:title> <div>{{ $content }}</div> </x-card> نصب: composer require livewire/blaze Islands Architecture رندر فقط بخشهای لازم: @island <x-chart :data="$this->accountRevenue" /> @endisland بارگذاری تنبل با Placeholder: @island(lazy: true) @placeholder <x-loading /> @endplaceholder <x-heavy-component /> @endisland اسکرول بینهایت بدون JS: @island('posts', render: 'append') @foreach($posts as $post) <x-post :post="$post" /> @endforeach @endisland <div wire:island="posts" wire:intersect="$paginator.nextPage()"></div> Polling دورهای: @island(poll: '5s') <div>Active Users: {{ $activeUsers }}</div> @endisland جمعبندی: Livewire 4 با کامپوننتهای یکپارچه، Blaze، Islands و پشتیبانی از **PHP 8.4**، توسعه در Laravel را سریعتر، سادهتر و لذتبخشتر کرده. ساخت اپهای تعاملی با عملکرد بالا حالا از همیشه راحتتر است. ✅ کانال تخصصی لاراول 📌 @PapiDon_state ☕️ اتاق برنامهنویسی 📌 @PapiDon_coding
видео или голосовое, без подписи
کانال آموزشی لاراول pinned «🎬 قسمت جدید از فصل سوم دوره هوش مصنوعی منتشر شد! این قسمت یه نقطهی عطفه! 🔥 اگه فکر میکنی مهندسی پرامپت نویسی فقط یعنی قشنگ نوشتن و جملهسازی، باید بگم نه رفیق… اصل ماجرا از یه جایی مثل Tokenization شروع میشه! بشدت دیدن این فصل رو پیشنهاد میکنم و از دستش…»
🎬 قسمت جدید از فصل سوم دوره هوش مصنوعی منتشر شد! این قسمت یه نقطهی عطفه! 🔥 اگه فکر میکنی مهندسی پرامپت نویسی فقط یعنی قشنگ نوشتن و جملهسازی، باید بگم نه رفیق… اصل ماجرا از یه جایی مثل Tokenization شروع میشه! بشدت دیدن این فصل رو پیشنهاد میکنم و از دستش نده ! واقعاً درک عمیق مدلهای زبانی و مسیر حرفهای شدن توی AI 📌 با سادهترین و شیرینترین توضیح ممکن، مفهوم Token برات جا میافته؛ طوری که بعدش بگی: «آهااا! بالاخره گرفتم!» 😄 https://www.youtube.com/watch?v=ZGqCPhZKlp0
کانال آموزشی لاراول pinned «✨ مسیر تبدیل شدن به یک برنامهنویس ارشد لاراول: نقشه راه و آزمونهای واقعی دنیای کار در دنیای همیشه در حال تغییر برنامهنویسی وب، اینکه فقط لاراول یا حتی PHP را خوب بلد باشی کافی نیست. برای اینکه یک Laravel Lead Developer بشی، باید چند قدم جلوتر بری: طراحی…»
✨ مسیر تبدیل شدن به یک برنامهنویس ارشد لاراول: نقشه راه و آزمونهای واقعی دنیای کار در دنیای همیشه در حال تغییر برنامهنویسی وب، اینکه فقط لاراول یا حتی PHP را خوب بلد باشی کافی نیست. برای اینکه یک Laravel Lead Developer بشی، باید چند قدم جلوتر بری: طراحی معماری سیستمها، ساخت APIهای قوی، هدایت تیم، و بالا نگه داشتن کیفیت کد. این راهنما بهت کمک میکنه مسیر رشد رو مرحلهبهمرحله طی کنی و به برنامهنویسی تبدیل بشی که آمادهی رهبری تیمهای توسعهست و میتونه اپلیکیشنهایی بسازه که هم مقیاسپذیر باشن و هم قابلاعتماد. 📚 نقشهی راه مرحلهبهمرحله برای تبدیل شدن به Laravel Lead Developer 1️⃣. پایهی فنی رو محکم کن ✅ مهارتهای پیشرفته PHP * برنامهنویسی شیگرا رو بهخوبی یاد بگیر، مخصوصاً مفاهیمی مثل traits، namespaces، و design patternها. * با اصول SOLID کدی بنویس که تمیز، قابلنگهداری و حرفهای باشه. * ویژگیهای نسخههای جدید PHP 8 رو یاد بگیر مثل match، union types و attributes. * روشهای پروفایلگیری و دیباگ کردن رو بلد باش؛ مثلاً با ابزارهایی مثل Xdebug و Blackfire. منبع پیشنهادی: PHP: The Right Way ✅ تسلط بر لاراول * با routing، middleware، و Service Container راحت کار کن. * از Eloquent ORM برای کار با دیتابیس به شکلی تمیز و ساده استفاده کن. * صفها (queues)، وظایف (jobs)، و broadcasting رو یاد بگیر تا اپلیکیشنت به شکل غیربلوکه اجرا بشه. * احراز هویت با Sanctum یا Passport رو بلد باش. * با ابزارهای پیشرفتهی لاراول مثل Horizon، Octane، Telescope و Nova آشنا شو. 2️⃣. طراحی معماری و ساختار سیستمها ✅ طراحی نرمافزار * از Domain-Driven Design (DDD) استفاده کن تا پروژههات ساختاریافته باشن. * معماریهای مدرن مثل Hexagonal Architecture یا CQRS/Event Sourcing رو بررسی کن. * فرق بین microservices و modular monoliths رو بفهم و بسته به پروژه تصمیم بگیر. ✅ بهینهسازی دیتابیس * ایندکسگذاری، بهینهسازی کوئریها و استفاده از EXPLAIN رو یاد بگیر. * با Redis کش کردن دادهها رو انجام بده. ✅ DevOps و بهبود عملکرد * از Docker و Laravel Sail برای توسعهی محلی استفاده کن. * خط لولههای CI/CD رو با GitHub Actions یا GitLab CI راهاندازی کن. * سلامت اپ رو با ابزارهایی مثل Sentry، Blackfire، و Telescope بررسی کن. 3️⃣. رهبری و هدایت تیم برنامهنویس ارشد فقط کدنویس نیست. باید بلد باشی: * کد دیگران رو بررسی (Code Review) کنی و بازخورد مفید بدی. * به برنامهنویسهای تازهکار آموزش بدی. * با متدولوژیهای Agile کار کنی. * امنیت رو جدی بگیری؛ با OWASP و بهترین روشهای امنیتی لاراول. 🔮 آزمونهای فنی شبیه به دنیای واقعی ⚙️ چالش طراحی API * یک REST API برای ابزار مدیریت پروژه با لاراول بساز. * از Sanctum برای احراز هویت استفاده کن. * عملیات CRUD برای پروژهها و وظایف پیادهسازی کن. * ارتباط بین مدلها، Policyها و تستها رو هم در نظر بگیر. ⚙️ بازسازی معماری یک کد قدیمی * پروژهی لاراول قدیمی رو بازسازی کن. *مفاهیم SOLID رو پیاده کن، سرویسها رو جدا کن، و Repository pattern رو استفاده کن. ⚙️ بهینهسازی عملکرد و کوئریها * با دیتاستهای بزرگ کار کن. * کوئریهای کند رو تحلیل کن، ایندکسگذاری و کش رو اجرا کن. * اگر خواستی، از Laravel Scout هم استفاده کن. ⚙️ راهاندازی DevOps * اپ لاراول رو Dockerize کن. * در واقع GitHub Actions رو برای CI راهاندازی کن. * اگر خواستی، پروژه رو روی یک سرویس ابری هم منتشر کن. ⚙️ بررسی کد (Code Review) * یک pull request رو بررسی کن. * روی خوانایی، تستها، و امنیت تمرکز کن. 📆 سوالات نمونه برای مصاحبه * چطور یک اپلیکیشن چند مستاجره (multi-tenant) با لاراول طراحی میکنی؟ * مزایا و معایب Eloquent ORM چیه؟ * چه زمانی از Jobs بهجای Events استفاده میکنی؟ * اگر در لاراول دچار circular dependency شدی، چطور حلش میکنی؟ * چطور سیستم صفها (queue) رو مقیاسپذیر میکنی وقتی میلیونها کار قراره انجام بشه؟ 🌟 ابزارهایی که هر Laravel Lead باید بلد باشه: این بخش میتونه بسته به پروژهها و ترجیحات تیم متنوع باشه، ولی ابزارهای مثل Telescope، Horizon، Sentry، Scout، Octane و غیره جزو پایهها هستن. 📄 حرف آخر برنامهنویس ارشد بودن فقط به دستور زبان و سینتکس نیست. یعنی بلد باشی یک سیستم پایدار طراحی کنی، تیم رو راهنمایی کنی، عملکرد پروژه رو بالا ببری و محصولی بسازی که قابلیت رشد و گسترش داشته باشه. این نقشهی راه و تمرینهایی که معرفی شد، کمکت میکنن تا چند قدم به جلو بری و با اعتمادبهنفس پروژهها رو رهبری کنی. ✅ کانال تخصصی لاراول 📌 @PapiDon_state ☕️ اتاق برنامهنویسی 📌 @PapiDon_coding
видео или голосовое, без подписи
🚀قابلیت پنهان در لاراول 12 که شاید ازشون خبر نداشتی - بخش اول نسخهی ۱۲ لاراول که در فوریه ۲۰۲۵ منتشر شد، فقط یه آپدیت نگهدارنده نبود. این نسخه با هدف بهبود تجربهی برنامهنویس، قابلیتهای جدیدی رو اضافه کرده که خیلی از اونها شاید توی هیاهوی بروزرسانیهای پکیج و پایداری، گم شده باشن. در ادامه، با چند ویژگی کمتر شناختهشده ولی خیلی کاربردی در Laravel 12 آشنا میشی — همراه با مثالهای کدی که بتونی همین امروز ازشون استفاده کنی: 1️⃣ متد Collection::range حالا از پارامتر سوم (گام) پشتیبانی میکنه 📏 قبلاً برای ساخت یه رنج با گام مشخص باید دستی حلقه میزدی. حالا با پارامتر step میتونی مستقیم رنج با گام دلخواه بسازی: $numbers = collect()->range(1, 10, 2); // خروجی: [1, 3, 5, 7, 9] 💡 یعنی دیگه نیازی به حلقهی سفارشی یا توابع اضافی برای ساختن دنبالهها نیست! 2️⃣ پشتیبانی داخلی از UUID نسخه ۷ 🆔 از این نسخه به بعد، وقتی از trait به نام HasUuids در مدلهات استفاده کنی، UUIDهای نسخه ۷ بهصورت پیشفرض تولید میشن. use Illuminate\Database\Eloquent\Concerns\HasUuids; class Order extends Model { use HasUuids; } ⏱️ UUIDv7 مرتب بر اساس زمانه (time-ordered)، که باعث میشه در دیتابیسهای بزرگ، ایندکسها سریعتر و مرتبتر کار کنن — مخصوصاً وقتی کوئریها زیادن. 3️⃣ در AuthKit داخلی برای ورود اجتماعی و Passkey 🔐 حالا Laravel 12 بهصورت پیشفرض با WorkOS AuthKit هماهنگه — مخصوصاً اگر از Jetstream یا Breeze (React, Vue, یا Livewire) استفاده کنی. پشتیبانی کامل از: * ورود با گوگل، گیتهاب و شبکههای اجتماعی دیگه * احراز هویت با Passkey (مثل WebAuthn و FIDO2) * SSO سازمانی برای شرکتها ✅ دیگه فقط با چند کامند ساده میتونی احراز هویت مدرن و حرفهای راه بندازی. 4️⃣ پشتیبانی قوی و رسمی از Pest PHP 🧪 در Pest یه فریمورک تستنویسیه که سادهتر، تمیزتر و خواناتر از PHPUnit کدنویسی میکنه — حالا در Laravel 12 بهصورت کامل پشتیبانی میشه. مثال: it('creates a new user', function () { $response = $this->post('/register', [ 'name' => 'John', 'email' => 'john@example.com', 'password' => 'secret', ]); $response->assertStatus(302); }); اینطوری هم تست مینویسی، هم از قدرت کامل سیستم تست لاراول استفاده میکنی، بدون پیچیدگی اضافه. 5️⃣ پشتیبانی اختصاصی از MariaDB در Artisan 🐬 حالا Artisan مستقیماً MariaDB رو بهعنوان درایور دیتابیس میشناسه. یعنی دیگه نیازی به workaround یا ترفندهای خاص نداری. php artisan migrate --database=mariadb 👥 این ویژگی برای تیمهایی که از MariaDB در محیط واقعی استفاده میکنن خیلی به درد بخوره. ✅ کانال تخصصی لاراول 📌 @PapiDon_state ☕️ اتاق برنامهنویسی 📌 @PapiDon_coding
видео или голосовое, без подписи
💬 ویجت Volet : دریافت بازخورد کاربر برای Laravel گرفتن بازخورد از کاربران یکی از کلیدیترین روشها برای بهبود تجربه کاربری و ارتقای کیفیت اپلیکیشنهاست. پکیج Volet که توسط Clément Rigo برای لاراول ساخته شده، یه راه حل ساده و قابل سفارشیسازی برای اضافه کردن ویجت بازخورد به اپلیکیشن Laravel شماست. 🪄 در اصل Volet یه پنل بازشوئه که با کلیک روی یه دکمه شناور باز میشه. داخل اون پنل، خودت انتخاب میکنی که به کاربرات چه گزینههایی بدی: فرم ساده؟ چتبات؟ یا هر چیز دیگهای! 🌟 ویژگیهای اصلی: 🎨 تم کاملاً قابل سفارشیسازی با استفاده از CSS Variables یا حتی CSS اختصاصی خودت 🔌 سیستم قابلیتهای قابل توسعه (feature system) 💌 جمعآوری پیامهای بازخورد به صورت پیشفرض * 🧩 ادغام ساده با Laravel * ⚙️ ساختهشده با VueJS * 🛠 امکان ساخت قابلیتهای اختصاصی یا نصب قابلیتهای ساختهشده توسط دیگران ⚙️ نصب و راهاندازی: برای نصب پکیج از دستور زیر استفاده کن: composer require mydnic/volet بعد، فایلهای assets مربوط به پکیج رو منتشر کن: php artisan vendor:publish --tag="volet-assets" --force چون Volet به صورت پیشفرض قابلیت جمعآوری پیامهای بازخورد رو داره، باید migrationها رو هم منتشر و اجرا کنی: php artisan vendor:publish --tag="volet-migrations" php artisan migrate 🔧 حالا توی فایل قالب Blade باید این دو دستور رو اضافه کنی: * داخل تگ head @voletStyles * قبل از بسته شدن تگ body @volet 📋 یک نکته برای کاربران Filament اگر از Filament استفاده میکنی و میخوای یه صفحه ساده برای نمایش پیامهای Volet توی پنل Filament داشته باشی، میتونی افزونه Volet Filament plugin رو نصب کنی. 🧩 توسعه قابلیتهای دلخواه معماری Volet طوری طراحی شده که بتونی خیلی راحت قابلیتهای سفارشی خودت رو توسعه بدی. فقط کافیه کلاس BaseFeature رو گسترش بدی یا از قابلیتهایی که دیگران ساختن استفاده کنی. مثلاً یکی از قابلیتهای سفارشی معروف، Volet Feature Board هست. 📚 برای اطلاعات بیشتر، نحوه ساخت قابلیتهای جدید، و دیدن سورسکد، حتماً به صفحهی GitHub این پکیج سر بزن. ✅ کانال تخصصی لاراول 📌 @PapiDon_state ☕️ اتاق برنامهنویسی 📌 @PapiDon_coding
видео или голосовое, без подписи
🤖 اتصال Laravel به دنیای مدلهای زبانی بزرگ با OpenRouter پکیج Laravel OpenRouter بهت این امکان رو میده که خیلی راحت و سریع، سرویس OpenRouter رو به اپلیکیشن Laravel خودت وصل کنی. 🔌 در واقع OpenRouter یه رابط یکپارچه برای کار با مدلهای زبانی بزرگ (LLMs) هست. یعنی با استفاده از فقط یه API، میتونی به چندین مدل مختلف هوش مصنوعی دسترسی داشته باشی — بدون اینکه بخوای برای هر کدوم جداگانه تنظیمات پیچیده انجام بدی. 🧠 مثال ساده استفاده: // متنی که میخوای به عنوان درخواست به مدل بدی $content = 'Tell me a story about a rogue AI that falls in love with its creator.'; // انتخاب مدل دلخواه از لیست مدلهای OpenRouter $model = 'mistralai/mistral-7b-instruct:free'; // ساختار درخواست $chatData = new ChatData( messages: [ new MessageData( content: $content, role: RoleType::USER, ), ], model: $model, max_tokens: 100, // (میتونی این مقدار رو به دلخواه تنظیم کنی) ); // ارسال درخواست و دریافت پاسخ $chatResponse = LaravelOpenRouter::chatRequest($chatData); 🔁 اینجا از Facade پکیج استفاده شده، اما این پکیج از streaming chat هم پشتیبانی میکنه. یعنی میتونی خروجی مدل رو بهصورت زنده و مرحلهبهمرحله دریافت کنی — مخصوصاً وقتی میخوای یه رابط کاربری تعاملی بسازی. 🌊 مثال استریم کردن پاسخ: $promise = LaravelOpenRouter::chatStreamRequest($chatData); $stream = $promise->wait(); // خروجی به صورت GuzzleHttp\Psr7\Stream while (! $stream->eof()) { $rawResponse = $stream->read(1024); // میتونی خروجی خام رو فیلتر و تبدیل به فرمت استاندارد پاسخ کنی $response = LaravelOpenRouter::filterStreamingResponse($rawResponse); } 📚 برای اطلاعات بیشتر، نصب کامل، و دیدن سورسکد این پکیج، میتونی به صفحه GitHubش سر بزنی. همچنین برای شروع کار با OpenRouter، یه Quickstart Guide (راهنمای سریع شروع) هم براش آماده شده. 🛠 دستور نصب: composer require moe-mizrak/laravel-openrouter php artisan vendor:publish --tag=laravel-openrouter اگر خواستی با مدلهای هوش مصنوعی مختلف مثل GPT، Claude، Mistral و ... توی اپلیکیشن لاراولیت تعامل داشته باشی، این پکیج یکی از راحتترین و حرفهایترین راههاست 💡 ✅ کانال تخصصی لاراول 📌 @PapiDon_state ☕️ اتاق برنامهنویسی 📌 @PapiDon_coding GitHub
видео или голосовое, без подписи
✨ پاکسازی هوشمند کشهای منقضیشده در لاراول با ابزار Cache Evict استفاده از کش یکی از روشهای مهم برای افزایش سرعت دریافت دادهها و کاهش فشار روی سرور توی پروژههای واقعی محسوب میشه. لاراول بهصورت پیشفرض چندتا کشدرایور مثل file و database داره که حسابی به درد توسعهدهندهها میخورن. 📦 اما مشکل زمانی پیش میاد که آیتمهای موقتی زیادی با کلیدهای تصادفی ساخته میشن و اگر به موقع حذف نشن، فضای ذخیرهسازی رو پر میکنن. برای همین، پاکسازی کشهای منقضیشده هر از گاهی کاملاً ضروریه. 🧹 در لاراول میتونی کش رو با این دو روش پاک کنی: * استفاده از ()Cache::flush * یا دستور php artisan cache:clear ⚠️ ولی باید بدونی که این روشها کل کش رو پاک میکنن؛ حتی کشهای سیستمی خود لاراول. این کار ممکنه باعث بشه بعضی فایلها به خاطر تفاوت دسترسی کاربران، دچار مشکل بشن (مثلاً وقتی /bootstrap/cache مال یه کاربره و کش رو کاربر دیگه ساخته). ❓ برای حل این مشکل، یه پکیج فوقالعاده به اسم Laravel Cache Evict ساخته شده توسط Vincent Wong که فقط آیتمهای منقضیشده رو پاک میکنه — اونم خیلی سبک و سریع، مخصوصاً برای database cache بهصورت non-blocking. 🛠 روش نصب و استفاده 📥 برای نصب این پکیج از دستور زیر استفاده کن: composer require vectorial1024/laravel-cache-evict ▶️ برای پاکسازی کش پیشفرض لاراول: php artisan cache:evict 📂 و اگر خواستی مشخص کنی که دقیقاً کدوم درایور پاک بشه (مثلاً file): php artisan cache:evict file 📚 اگر دلت میخواد بیشتر یاد بگیری یا استراتژیهای پاکسازی دلخواه خودت رو تعریف کنی، حتماً یه نگاهی به صفحهی GitHub این پکیج بنداز. ✅ کانال تخصصی لاراول 📌 @PapiDon_state ☕️ اتاق برنامهنویسی 📌 @PapiDon_coding
видео или голосовое, без подписи
کانال آموزشی لاراول pinned Deleted message
📘 در لاراول Query Scope: یاد بگیر چطور استادش بشی! بخش اول وقتی داری اپلیکیشن لاراول میسازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی. 👀 مثلاً: اپلیکیشن چند تیمی ساختی و باید همیشه team_id کاربر رو توی کوئریها فیلتر کنی…
📘 در لاراول Query Scope: یاد بگیر چطور استادش بشی! بخش اول وقتی داری اپلیکیشن لاراول میسازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی. 👀 مثلاً: اپلیکیشن چند تیمی ساختی و باید همیشه team_id کاربر رو توی کوئریها فیلتر کنی یا یه بلاگ داری و مدام باید بررسی کنی پست منتشر شده یا نه (published_at) 🤯 تکرار این شرطها هم خستهکنندهست، هم مستعد خطا. 🎯 راه حل: Query Scope یه راه ساده برای تعریف شرطهای قابل استفاده مجدد توی مدلهات هست. این شرطها معمولاً بهصورت متد روی مدل (Model) تعریف میشن یا میتونی یه کلاس اختصاصی برایش بسازی. 🧩 دو نوع Scope داریم: 1️⃣ Local Scope ➜ باید دستی توی کوئری صدا زده بشه 2️⃣ Global Scope ➜ بهصورت خودکار روی همه کوئریهای اون مدل اعمال میشه مثلاً ویژگی Soft Delete خود لاراول از Global Scope استفاده میکنه! 🌿 Local Query Scope فرض کن یه بلاگ داری با دو صفحه در پنل ادمین: ✅ پستهای منتشر شده 🚧 پستهای منتشر نشده مدل ما: App\Models\Article ستون زمان انتشار: published_at (nullable) اگر published_at در گذشته باشه = منتشر شده اگر null یا در آینده باشه = هنوز منتشر نشده 🔸 کوئری به روش معمول: $publishedPosts = Article::query() ->where('published_at', '<=', now()) ->get(); 🔸 کوئری پستهای منتشر نشده: $unpublishedPosts = Article::query() ->where(function (Builder $query) { $query->whereNull('published_at') ->orWhere('published_at', '>', now()); })->get(); 🥴 اینا سادهان ولی اگه توی کل اپ تکرار بشن، احتمال خطا بالا میره. ✅ راه حل: تعریف دو scope به اسم scopePublished و scopeNotPublished داخل مدل: final class Article extends Model { public function scopePublished(Builder $query): Builder { return $query->where('published_at', '<=', now()); } public function scopeNotPublished(Builder $query): Builder { return $query->where(function (Builder $query) { return $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }); } } 🔸 حالا کوئریها خیلی شیک و تمیز میشن: $publishedPosts = Article::query()->published()->get(); $unpublishedPosts = Article::query()->notPublished()->get(); ✅ کانال تخصصی لاراول 📌 @PapiDon_state ☕️ اتاق برنامهنویسی 📌 @PapiDon_coding
видео или голосовое, без подписи
کانال آموزشی لاراول pinned «🔐 ورود بدون رمز عبور با Passkeys در لاراول! توسط Spatie آیا دوست داری کاربران سایتت بدون وارد کردن ایمیل و رمز عبور وارد بشن؟ فقط با یه تأیید ساده از طریق موبایل یا مرورگر؟ 💡 پکیج Laravel Passkeys از تیم معروف Spatie که این کار رو توی اپلیکیشنهای لاراول…»