کانال آموزشی لاراول
3.06K subscribers
120 photos
4 videos
38 links
📌 کانال اتاق برنامه نویسی
@PapiDon_coding
Download Telegram
کانال آموزشی لاراول
Photo
🔥 پکیج جذاب Toast برای لاراول – معرفی Laravel Toaster Magic

اگه دنبال یه راه ساده، سریع و شیک برای نشون دادن پیام‌های toast توی پروژه‌هات با Laravel هستی، این پکیج دقیقاً همون چیزیه که لازم داری!

یه پکیج سبک و قوی برای ایجاد toast نوتیفیکیشن توی اپلیکیشن‌های Laravel هستش

🚀 ویژگی‌های جالب این پکیج:

- استفاده‌ی ساده و مستقیم داخل Laravel
- پشتیبانی کامل از زبان‌های راست‌به‌چپ مثل فارسی 🇮🇷
- حالت تاریک برای هماهنگی با UI تاریک 🌑
- پیام‌های toast کاملاً قابل شخصی‌سازی و قابل تنظیم به دلخواه شما 🎯

🛠 چطور نصبش کنیم؟

خیلی راحت! فقط چند خط کده:

1️⃣ نصب با Composer:

composer require devrabiul/laravel-toaster-magic


2️⃣ منتشر کردن فایل‌های پکیج:

php artisan vendor:publish --provider="Devrabiul\ToastMagic\ToastMagicServiceProvider"


3️⃣ اضافه کردن استایل‌ها و اسکریپت‌ها در فایل Blade:

<!DOCTYPE html>
<html lang="en">
<head>
{!! ToastMagic::styles() !!}
</head>
<body>
// محتوای شما

{!! ToastMagic::scripts() !!}
</body>
</html>


🎯 چطور toast نمایش بدیم؟

توی متدهای Controller به همین راحتی:

use Devrabiul\ToastMagic\Facades\ToastMagic;

class TeamController extends Controller
{
public function store()
{
ToastMagic::success('Team added successfully!');
return redirect('/teams');
}
}


📌 همچنین می‌تونی از toastهای دیگه مثل:

- ⚠️ warning
- error
- ℹ️ info

استفاده کنی.

💻 Toast از طریق JavaScript

اگر خواستی toast رو مستقیم از JS اجرا کنی:

const toast = new ToastMagic();
toast.success("Success!", "Your data has been saved!");


---

📚 برای اطلاعات بیشتر یا دیدن سورس‌کدش:

🔗 Link





کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
15👍4🔥1
🔥1👏1
کانال آموزشی لاراول
Photo
فصل اول دوره کامل شد!

اگه همیشه برات سوال بوده که هوش مصنوعی چیه و چطور کار می‌کنه، این فصل دقیقاً برای توئه!

توی این فصل، همه‌چی رو ساده، قابل فهم و بدون پیچیدگی توضیح دادم:

💡 درک اولیه از AI
🕰 تاریخچه‌ی هوش مصنوعی
🧠 مفاهیم پایه‌ای و مهم
⚙️ طرز فکر کردن هوش مصنوعی
🔧 مدل‌ها و پارامترها

مهم نیست مبتدی باشی یا فقط کنجکاوی — این ویدیوها برای همه طراحی شدن تا از یادگیری لذت ببرند! 😊


▶️ لینک دسترسی به دوره

https://youtu.be/pKQDvl34N7E?si=YuqOAXEKFvbS0Raj



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👍6🔥1
سیر تا پیاز Codex: دستیار هوش مصنوعی که کدنویسی رو متحول می‌کنه!

🔗 مطالعه این مطلب در اینجا 👉
👍41
👏1
کانال آموزشی لاراول
Photo
🔐 ورود بدون رمز عبور با Passkeys در لاراول!
توسط Spatie

آیا دوست داری کاربران سایتت بدون وارد کردن ایمیل و رمز عبور وارد بشن؟ فقط با یه تأیید ساده از طریق موبایل یا مرورگر؟

💡 پکیج Laravel Passkeys از تیم معروف Spatie که این کار رو توی اپلیکیشن‌های لاراول خیلی راحت و حرفه‌ای انجام می‌ده.

🎯 چیه اصلاً Passkey؟

یه کلید امنه که توی ابزارهایی مثل:

- 1Password
- مدیریت رمز عبور در macOS
- و سایر اپ‌های رمزنگاری‌شده

ذخیره می‌شه. وقتی از Passkey استفاده می‌کنی، دیگه لازم نیست ایمیل یا پسورد بزنی؛ فقط با یک کلیک یا اثر انگشت یا Face ID وارد می‌شی.


⚙️ این پکیج چه کاری می‌کنه؟

این پکیج بهت اجازه می‌ده:

🔹 به‌راحتی برای کاربر Passkey بسازی
🔸 سیستم ورود بدون رمز عبور رو در برنامه‌ت فعال کنی.
🔹 با استفاده از کامپوننت‌های Livewire یا Blade این سیستم رو پیاده‌سازی کنی

⚒️ پشتیبانی از Livewire و Inertia

در حال حاضر، این پکیج به‌صورت پیش‌فرض با Livewire کار می‌کنه، ولی اگر از Inertia استفاده می‌کنی، می‌تونی خودت یه کامپوننت سفارشی با React یا Vue بسازی.

📘 برای این مورد، صفحه‌ی "Usage in Inertia" توی داکیومنتش رو حتماً ببین!

🚀 شروع کار با Passkeys

📦 سورس کد این پکیج در گیت‌هاب منتشر شده:

🔗 لینک اینجا

📚 توی مستنداتش می‌تونی قدم‌به‌قدم یاد بگیری چطور نصبش کنی و ازش استفاده ببری.

حتی یه اپلیکیشن دمو هم ساختن تا بتونی این سیستم رو به‌صورت واقعی ببینی و تست کنی.

📌 نتیجه‌گیری کوتاه

اگه دنبال راهی امن‌تر، سریع‌تر و مدرن‌تر برای ورود کاربران هستی، بدون شک Passkeys یه انتخاب فوق‌العاده‌ست برای اپلیکیشن‌های لاراولی — مخصوصاً اگه تجربه‌ی کار با پکیج‌های Spatie رو داشته باشی، می‌دونی چقدر تمیز و استاندارد کار می‌کنن.


کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
🔥54👍1👏1🎉1💯1
کانال آموزشی لاراول pinned «🔐 ورود بدون رمز عبور با Passkeys در لاراول! توسط Spatie آیا دوست داری کاربران سایتت بدون وارد کردن ایمیل و رمز عبور وارد بشن؟ فقط با یه تأیید ساده از طریق موبایل یا مرورگر؟ 💡 پکیج Laravel Passkeys از تیم معروف Spatie که این کار رو توی اپلیکیشن‌های لاراول…»
👍1🎉1
کانال آموزشی لاراول
Photo
📘 در لاراول 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
👌8👍3🔥31🎉1
کانال آموزشی لاراول
📘 در لاراول Query Scope: یاد بگیر چطور استادش بشی! بخش اول وقتی داری اپلیکیشن لاراول می‌سازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی. 👀 مثلاً: اپلیکیشن چند تیمی ساختی و باید همیشه team_id کاربر رو توی کوئری‌ها فیلتر کنی…
📘 بخش دوم / در لاراول Query Scope: یاد بگیر چطور استادش بشی!

🧩 اضافه کردن Global Scope به مدل

دو روش داریم:

1️⃣ با Attribute جدید لاراول:

#[ScopedBy(TeamScope::class)]
final class Article extends Model


2️⃣ با متد booted در مدل:

protected static function booted(): void
{
static::addGlobalScope(new TeamScope());
}


حالا بدون نوشتن where، همیشه فقط مقالات مرتبط با تیم خود کاربر برمی‌گرده:

Article::all(); // فقط برای تیم خودش


😎 Anonymous Global Scope

می‌تونی به‌جای ساختن کلاس، همون‌جا داخل مدل تعریفش کنی:

static::addGlobalScope('team_scope', function (Builder $builder) {
$builder->where('team_id', Auth::user()->team_id);
});


🚫 حذف Global Scope

گاهی لازمه Scope رو نادیده بگیری:

🔸 حذف همه Scope‌ها:

Article::query()->withoutGlobalScopes()->get();


🔸 حذف بعضی Scope‌ها:

->withoutGlobalScopes([
TeamScope::class,
'another_scope',
])


🔸 حذف فقط یکی:

->withoutGlobalScope(TeamScope::class)


⛔️ توجه: اگه از ()DB::table استفاده کنی، هیچ Global Scope اعمال نمی‌شه.

🧪 تست کردن Scopeها

تست scopePublished و scopeNotPublished

1️⃣ تست کن فقط مقالات منتشر شده بیاد

2️⃣ تست کن فقط مقالات منتشر نشده بیاد

🔸 نمونه تست:

$this->assertCount(2, $articles);
$this->assertTrue($articles->contains($this->publishedArticles->first()));


🧪 تست کردن در Controller

گاهی لازمه مطمئن شی که Scope توی کنترلر استفاده شده.

مثال:

final class ArticleController extends Controller
{
public function index()
{
return view('articles.index', [
'articles' => Article::all(),
]);
}
}


🔸 تست:

$this->actingAs($user)
->get('/articles')
->assertViewHas(
'articles',
fn (Collection $articles) =>
$articles->pluck('id')->all() === $articlesForTeamOne->pluck('id')->all()
);


نتیجه نهایی

- حالا دیگه فرق بین Local و Global Query Scope رو می‌دونی
- یاد گرفتی چطور بسازیشون
- بلدی چطور تست‌شون کنی

و از همه مهم‌تر:

🔁 می‌تونی کدت رو مرتب‌تر، امن‌تر و قابل نگهداری‌تر بنویسی! 😎




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👏8🎉3
کانال آموزشی لاراول
Photo
پاک‌سازی هوشمند کش‌های منقضی‌شده در لاراول با ابزار 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
👍7👏1
کانال آموزشی لاراول
Photo
🤖 اتصال 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
👏74👍1
کانال آموزشی لاراول
Photo
💬 ویجت 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
6👍1
کانال آموزشی لاراول
Photo
🚀قابلیت پنهان در لاراول 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
8👍3🔥1🤩1
1