کانال آموزشی لاراول
3.06K subscribers
120 photos
4 videos
38 links
📌 کانال اتاق برنامه نویسی
@PapiDon_coding
Download Telegram
Media is too big
VIEW IN TELEGRAM
این ویدیو در مورد پکیج "Laravel Pulse" است و به بررسی ویژگی‌های مختلف "Pulse" می‌پردازد.

🔹در این ویدیو، نحوه نصب و استفاده از "Pulse" در یک برنامه Laravel نشان داده می‌شود. توضیح داده می‌شود که چگونه "Pulse" می‌تواند داده‌های مختلف، کارهای در صف، کوئری‌های کند، استثناها، درخواست‌ها، و درخواست‌های خروجی را جمع‌آوری و نمایش دهد.

🔸همچنین، امکان سفارشی‌سازی داشبورد "Pulse" و افزودن کارت‌های سفارشی برای نمایش داده‌های دلخواه وجود دارد.

🔹ویدیو همچنین به برخی از ملاحظات عملکردی می‌پردازد، مانند استفاده از پایگاه داده جداگانه برای داده‌های "Pulse"، استفاده از Redis برای کاهش بار بر روی پایگاه داده اصلی، و نمونه‌برداری داده‌ها برای کاهش بار سرور در وب‌سایت‌های با ترافیک بالا.

🧩 در کل، این ویدیو یک معرفی جامع به "Laravel Pulse" و نحوه استفاده از آن برای بهبود عملکرد و نظارت بر برنامه‌های Laravel است.


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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🤩11👍5🔥2
کانال آموزشی لاراول
Video
فیلتر کردن پاسخ‌های API با Laravel Purity

بسته Laravel Purity یک پکیج فیلتر کردن و مرتب‌سازی زیبا و کارآمد برای Laravel است که برای ساده‌سازی منطق پیچیده فیلتر داده‌ها و مرتب‌سازی برای کوئری‌های eloquent طراحی شده است. با افزودن ساده ()filter به کوئری‌ Eloquent خود، می‌توانید امکان فیلتر کردن توسط کاربران frontend را بر اساس پارامترهای رشته کوئری‌ URL به آسانی فراهم کنید.

🔸 فرض کنید کنترلر شما مجموعه‌ای از کتاب‌ها را برمی‌گرداند و می‌خواهید اجازه فیلتر کردن بر اساس slug دسته‌بندی mystery را بدهید:

return Book::filter()->with('category')->get();


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

/api/books?filters[category][slug][$eq]=mystery


پاسخ فیلتر شده اکنون تنها شامل کتاب‌هایی در دسته‌بندی با slug mystery خواهد بود. Purity انواع فیلترها را برای مواردی مانند in$ و lt$ یا gt$ و غیره ارائه می‌دهد.

🔹در واقع Purity ویژگی‌های اصلی زیر را برای تبدیل شدن به یک بسته قدرتمند فیلتر کردن و مرتب‌سازی داده‌ها برای مدل‌های Eloquent ارائه می‌دهد:

- پشتیبانی از Livewire
- تغییر نام و محدود کردن فیلدها
- روش‌های مختلف فیلتر
- نصب و استفاده آسان
- فیلتر بر اساس ستون‌های رابطه
- فیلترهای سفارشی
- مرتب‌سازی چند ستونه

🔗 برای دستورالعمل‌های استفاده و راه‌اندازی، صفحه مستندات Purity را بررسی کنید!



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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍112🔥1
📊 Laravel Easy Metrics

🧐 معرفی:
لاراول ایزی متریکس، یک بسته قدرتمند برای ایجاد و مدیریت معیارها (متریک‌ها) در برنامه‌های نوشته شده با استفاده از فریمورک لاراول است. این بسته به شما کمک می‌کند تا به راحتی داده‌های مربوط به کاربران، تراکنش‌ها، و دیگر فعالیت‌ها را جمع‌آوری، تحلیل و نمایش دهید.

🔧 نصب و راه‌اندازی:
برای نصب Laravel Easy Metrics، از طریق Composer عمل کنید. کافی است دستور زیر را در ترمینال خود اجرا کنید:

composer require sakanjo/laravel-easy-metrics


پس از نصب، می‌توانید تنظیمات مورد نیاز را در فایل پیکربندی بسته انجام دهید.

📈 ایجاد متریک‌ها:
این بسته امکان ایجاد متریک‌های مختلف را فراهم می‌آورد. برای مثال، می‌توانید متریک‌هایی برای پیگیری تعداد کاربران جدید، تعداد تراکنش‌ها، یا هر شاخص دیگری که برای کسب‌وکار شما مهم است، ایجاد کنید.

👩‍💻 کدنویسی:
برای ایجاد یک متریک جدید، باید یک کلاس متریک ایجاد کنید و متدهای مورد نیاز برای جمع‌آوری و نمایش داده‌ها را پیاده‌سازی نمایید. Laravel Easy Metrics با ارائه ابزارهایی برای ساده‌سازی این فرآیند، کار شما را راحت‌تر می‌کند.

🔢 داده‌ها و گزارش‌ها:
پس از ایجاد متریک‌ها، می‌توانید گزارش‌های دقیق و مفیدی را بر اساس داده‌های جمع‌آوری شده ایجاد کنید. این گزارش‌ها می‌توانند در تصمیم‌گیری‌های کسب‌وکاری و تحلیل‌های استراتژیک به شما کمک کنند.

🔗 پیوندهای مفید:
برای کسب اطلاعات بیشتر و مشاهده مستندات کامل Laravel Easy Metrics



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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍7👌21
🔗 Sushi: Eloquent’s Missing “Array” Driver

🍱 در واقع Sushi، ابزاری قدرتمند از Caleb Porzio، به شما اجازه می‌دهد که مدل‌های Eloquent را در Laravel بدون استفاده از دیتابیس واقعی بسازید. این به خصوص برای داده‌هایی که تغییر نمی‌کنند یا به ندرت تغییر می‌کنند، مفید است.

مثلاً، در مورد داده‌هایی مانند فهرست کشورها، که به ندرت تغییر می‌کنند، استفاده از Sushi امکان ذخیره این داده‌ها درون یک آرایه در کلاس مدل را فراهم می‌کند، به جای اینکه نیاز به جدول دیتابیس باشد.

🛠 این کار باعث ساده‌سازی و افزایش سرعت توسعه می‌شود، به ویژه در مواردی که استفاده از یک دیتابیس کامل ضروری نیست.

📚 برای مشاهده نحوه استفاده و مثال‌های بیشتر، به لینک GitHub زیر مراجعه کنید:

🔗 GitHub - calebporzio/sushi



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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍82🔥1
کانال آموزشی لاراول
Photo
یادگیری به سبک T-Shape: راز موفقیت در عرصه‌های چندرشته‌ای

📝 چرا یادگیری T-Shape اهمیت دارد؟

در دنیای پرتغییر امروز، داشتن تخصص عمیق در یک حوزه کافی نیست. یادگیری T-Shape به شما کمک می‌کند تا علاوه بر تخصص در یک زمینه، دانش کافی در حوزه‌های مختلف داشته باشید تا بتوانید در محیط‌های کاری متنوع و پروژه‌های چندرشته‌ای بهتر عمل کنید.

🔸 بخش عمودی T (تخصص عمیق):

یادگیری T-Shape از این بخش شروع می‌شود. شما باید در یک حوزه خاص تخصص و مهارت عمیق داشته باشید. این می‌تواند هر چیزی از برنامه‌نویسی گرفته تا مدیریت، بازاریابی، یا حتی هنر باشد. تمرکز بر این حوزه باعث می‌شود که در آن زمینه یک متخصص واقعی شوید.

🔹بخش افقی T (دانش گسترده):

در این بخش، شما دانش پایه‌ای در زمینه‌های متفاوت دیگر کسب می‌کنید. این دانش به شما کمک می‌کند تا درک بهتری از چگونگی تعامل و همکاری با افراد دیگر در تیم‌های چندرشته‌ای داشته باشید. این مهارت‌ها می‌تواند شامل دانش ابتدایی در مورد ارتباطات، مدیریت پروژه، و حتی فنون فروش باشد.

🎯 چرا این مدل یادگیری مفید است؟

- افزایش توانایی همکاری: با داشتن دانش در زمینه‌های مختلف، می‌توانید بهتر با افراد از حوزه‌های گوناگون همکاری کنید.

- تقویت خلاقیت: ترکیب دانش‌های مختلف می‌تواند منجر به ایده‌های نوآورانه شود.

- انعطاف‌پذیری در شغل: داشتن مهارت‌های متنوع، شما را برای فرصت‌های مختلف شغلی آماده می‌کند.

🌱 چگونه می‌توانیم این مفهوم را در زندگی خود پیاده‌سازی کنیم؟

- ابتدا بر روی توسعه تخصص عمیق در یک حوزه تمرکز کنید.

- سپس، به دنبال فرصت‌های یادگیری در سایر حوزه‌ها باشید تا دیدگاه خود را گسترش دهید.

- شرکت در کارگاه‌ها، دوره‌های آنلاین، و سمینارها در زمینه‌های متفاوت می‌تواند به شما در کسب دانش گسترده کمک کند.

- ایجاد شبکه‌های حرفه‌ای با افرادی از حوزه‌های متفاوت به شما کمک می‌کند تا بینش‌های جدید کسب کنید و از تجربیات آنها یاد بگیرید.

- همیشه به یاد داشته باشید که یادگیری یک فرآیند مداوم است و باید به دنبال راه‌های جدید برای توسعه مهارت‌ها و دانش خود باشید.

💠 نتیجه‌گیری:

یادگیری T-Shape به شما این امکان را می‌دهد که در یک حوزه متخصص شوید و همزمان درک گسترده‌ای از سایر زمینه‌ها داشته باشید. این ترکیب از تخصص عمیق و دانش گسترده به شما کمک می‌کند تا در محیط‌های کاری چندرشته‌ای برجسته شوید و مسیر حرفه‌ای خود را به سمت موفقیت‌های بزرگتر هدایت کنید.



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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🔥6👍31👏1
کانال آموزشی لاراول
Photo
🛡Encrypting and Decrypting Data in Laravel

🛡رمزگذاری و رمزگشایی داده‌ها در لاراول

رمزگذاری برای حفاظت از اطلاعات حساس ضروری است تا اطمینان حاصل شود که هم در زمان ذخیره‌سازی و هم در زمان انتقال امن باقی می‌مانند.

🔐 رمزگذاری در لاراول:

لاراول یک روش ساده برای رمزگذاری داده‌ها با استفاده از تابع encrypt فراهم می‌کند. این تابع برای انجام رمزگذاری از کتابخانه OpenSSL استفاده می‌کند و امنیت بالایی را تضمین می‌کند.

// رمزگذاری داده‌ها
$originalData = 'Hello, world!';
$encryptedData = encrypt($originalData);


تابع encrypt داده‌های اصلی را به نسخه‌ای رمزگذاری شده و کدگذاری شده با base64 تبدیل می‌کند. این به‌ویژه زمانی مفید است که نیاز دارید اطلاعات حساس را در پایگاه داده‌ها ذخیره یا به صورت امن انتقال دهید.

🔓 رمزگشایی در لاراول:

برای بازیابی داده‌های اصلی، لاراول تابع decrypt را ارائه می‌دهد. این تابع فرآیند رمزگذاری را معکوس کرده و داده‌ها را با استفاده از کلید رمزگذاری مناسب رمزگشایی می‌کند.

// رمزگشایی داده‌ها
$decryptedData = decrypt($encryptedData);


با رمزگشایی داده‌ها، می‌توانید اطلاعات اصلی را بازیابی کرده و از آن‌ها در برنامه‌تان استفاده کنید.

⚙️ مثال عملی:

بیایید یک مثال عملی در کنترلر لاراول در نظر بگیریم:

use Illuminate\Support\Facades\Crypt;

class EncryptionController extends Controller
{
public function encryptAndDecrypt()
{
// رمزگذاری داده‌ها
$originalData = 'Hello, world!';
$encryptedData = encrypt($originalData);
// رمزگشایی داده‌ها
$decryptedData = decrypt($encryptedData);
// نمایش نتایج
return [
'original_data' => $originalData,
'encrypted_data' => $encryptedData,
'decrypted_data' => $decryptedData,
];
}
}


در این مثال، ما یک رشته را رمزگذاری و سپس آن را رمزگشایی می‌کنیم که سادگی فرآیند را نشان می‌دهد.


💡 استفاده از encryptString و decryptString:

برای راحتی بیشتر، لاراول از طریق نمایه Crypt، متدهای encryptString و decryptString را فراهم می‌کند.

$encryptedString = Crypt::encryptString('Hello, world!');
$decryptedString = Crypt::decryptString($encryptedString);


این متدها یک نحو ساده‌تر را ارائه می‌دهند، که ادغام رمزگذاری و رمزگشایی را مستقیماً در کد شما آسان‌تر می‌کند.

🔔 نکات مهم:

- حفظ امنیت کلید رمزگذاری:

لاراول برای رمزگذاری به کلید APP_KEY مشخص شده در فایل env. شما تکیه می‌کند. مطمئن شوید که این کلید محرمانه نگه داشته می‌شود، زیرا هر کسی که به آن دسترسی داشته باشد، می‌تواند داده‌ها را رمزگشایی کند.

- سازگاری نسخه:

لاراول در حال تکامل است و syntax آن ممکن است در نسخه‌های مختلف متفاوت باشد. همیشه به مستندات رسمی برای نسخه لاراولی که استفاده می‌کنید مراجعه کنید.



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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍11🔥2
دوستان و همراهان عزیز، سلام! 👋

🕒 در دنیای پرمشغله امروز، یکی از مهم‌ترین مهارت‌هایی که هر فردی نیاز دارد، "مدیریت زمان" و "اولویت‌بندی کارها" است.

🔍 ما در کانال اتاق برنامه‌نویسی </> قصد داریم به این موضوعات مهم گاهی بپردازیم و با ارائه اطلاعات، تکنیک‌ها و راهکارهای کاربردی نگاهی به این مفاهیم داشته باشیم.

👀 ازینجا مسیر موضوع را دنبال کنید ...

👈🏻 🔗 هدفگذاری SMART
3🔥1👏1
کانال آموزشی لاراول
Video
🌐 What is a Sitemap ?

یک Sitemap نقشه‌ای از وب‌سایت است که به موتورهای جستجو کمک می‌کند تا صفحات وب‌سایت شما را بهتر و سریع‌تر پیدا و ایندکس کنند. به زبان ساده‌تر، فهرستی از تمام صفحات موجود در وب‌سایت شماست که در قالبی قابل خواندن برای ربات‌های جستجو ارائه می‌شود.

🧐 اهمیت Sitemap چیست؟

🔸بهبود ایندکس‌شدن:
با داشتن Sitemap، موتورهای جستجو می‌توانند به راحتی صفحات جدید یا به‌روزرسانی‌های وب‌سایت شما را پیدا کنند.

🔸سازماندهی بهتر:
اگر وب‌سایت شما دارای تعداد زیادی صفحه یا محتوای پیچیده است، Sitemap به سازماندهی و دسته‌بندی محتوا کمک می‌کند.

🔸(بهینه‌سازی موتور جستجو) SEO :
به بهبود رتبه‌بندی وب‌سایت شما در نتایج جستجو کمک می‌کند، زیرا موتورهای جستجو بهتر می‌توانند محتوای شما را درک کنند.

🛠 انواع Sitemap:

🔹Sitemap XML:

بیشتر برای موتورهای جستجو استفاده می‌شود و به آن‌ها کمک می‌کند تا محتوای وب‌سایت را بهتر پیدا و ایندکس کنند.

🔹Sitemap HTML:

بیشتر برای کاربران است و به آن‌ها کمک می‌کند تا به راحتی در وب‌سایت شما جستجو کرده و محتوای مورد نیاز خود را پیدا کنند.


🌟 در اپلیکیشن لاراول خود با استفاده از Spatie Sitemap نقشه سایت بسازید.

🔔 ایجاد دستی این نقشه‌ها امکان‌پذیر است، و ما آموزشی در مورد نحوه ایجاد دستی نقشه سایت در اینجا داریم، اما یک پکیج با نام "laravel-sitemap" از Spatie ایجاد نقشه سایت را آسان‌تر از همیشه می‌کند.

⚙️ یکی از مزایای این بسته این است که دو روش برای ایجاد نقشه سایت فراهم می‌کند. اول اینکه می‌تواند به صورت خودکار سایت شما را جستجو کند و بر اساس پیوندهای داخلی آن را بسازد، یا اینکه می‌توانید کنترل کامل داشته باشید و به صورت دستی آن را بسازید.

🔗 برای اطلاعات کامل در مورد راه‌اندازی، پیکربندی و استفاده از بسته در برنامه خود به پکیج رسمی مراجعه کنید.





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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
5🔥1
کانال آموزشی لاراول
Photo
Generate PDFs in Laravel from Blade Views

پکیج Laravel PDF از Spatie، روشی ساده برای ایجاد فایل‌های PDF در برنامه‌های Laravel فراهم می‌کند. این پکیج از نماهای Blade برای رندر کردن HTML استفاده می‌کند و سپس از آن نما برای ایجاد یک PDF با استفاده از Browsershot بهره می‌برد.

این امر امکان استفاده از ابزارهای CSS مدرن مانند Grid و Flexbox، فریم‌ورک‌های CSS مدرن مانند Tailwind و حتی کدهای جاوااسکریپت برای مواردی مانند رندر کردن نمودارها را فراهم می‌کند.

🛠 در اینجا یک مثال ابتدایی از ایجاد یک PDF و بازگرداندن آن از یک کنترلر آورده شده است، که متغیرهایی را به template ارسال می‌کنید که می‌توانید از آن‌ها برای رندر داینامیک داده‌های PDF استفاده کنید:

use Spatie\LaravelPdf\Facades\Pdf;

class DownloadInvoiceController
{
public function __invoke(Invoice $invoice)
{
return Pdf::view('pdfs.invoice', ['invoice' => $invoice])
->format('a4')
->name('your-invoice.pdf');
}
}


🔸پکیج Laravel PDF از ویژگی‌های زیر پشتیبانی می‌کند:

- رندر PDF‌ها از الگوهای Blade یا یک رشته HTML

- ذخیره یک PDF تولید شده در Laravel disk

- اجرای کد جاوااسکریپت هنگام ایجاد PDF

- تست فیک PDF با assertions قدرتمند

- تولید PDF‌ها در Lambda از طریق Laravel Sidecar

- کنترل پیشرفته PDF با ابزارهایی مانند page breaks، سفارشی‌سازی Browsershot

- و موارد دیگر...

ایجاد PDF‌ها در Laravel با استفاده از Blade، تولید PDF‌های سفارشی زیبا را آسان‌تر و قدرتمندتر از همیشه خواهد کرد!

🔗 مستندات رسمی پکیج




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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍10🔥1
کانال آموزشی لاراول
Video
هنگام شروع یک اپلیکیشن جدید Laravel، باید از Model::shouldBeStrict استفاده کنید.

شما ایده‌ای برای اپ جدید دارید. شما Laravel را نصب می‌کنید و آماده شروع هستید. اولین کاری که باید انجام دهید چیست؟

برای من، من به app service provider می‌روم و به متد boot پایین می‌آیم و Model::shouldBeStrict را به صورت global تنظیم می‌کنم:

public function boot(): void
{
Model::shouldBeStrict();
}


با فعال سازی این گزینه، کارهای زیر را انجام می‌دهد:

public static function shouldBeStrict(bool $shouldBeStrict = true)
{
static::preventLazyLoading($shouldBeStrict);
static::preventSilentlyDiscardingAttributes($shouldBeStrict);
static::preventAccessingMissingAttributes($shouldBeStrict);
}


🛠 این سه کار را انجام می‌دهد:

1️⃣ Prevents lazy loading

داده‌ها فقط در زمان نیاز بارگذاری می‌شوند. در زمینه پایگاه داده‌ها، این بدان معناست که اطلاعات مرتبط با یک شیء خاص فقط زمانی بارگذاری می‌شود که صراحتا خواسته شده باشد. جلوگیری از این کار به معنای این است که برنامه باید تمام داده‌های مورد نیاز را به صورت فعال و از پیش بارگذاری کند.

2️⃣ It prevents silently discarding attributes

این به معنای جلوگیری از حذف یا نادیده گرفتن خاموش ویژگی‌هایی است که ممکن است در فرایند به‌روزرسانی یا ذخیره‌سازی داده‌ها اتفاق بیفتد. در بسیاری از چارچوب‌ها، اگر ویژگی خاصی در فرایند به‌روزرسانی مشخص نشده باشد، به صورت خودکار حذف یا نادیده گرفته می‌شود. این مکانیزم برای جلوگیری از این رفتار و اطمینان از اینکه تمام ویژگی‌ها به درستی مدیریت می‌شوند، به کار می‌رود.

3️⃣ It prevents accessing missing attributes

این عملکرد از دسترسی به ویژگی‌هایی که در یک شیء موجود نیستند، جلوگیری می‌کند. گاهی اوقات ممکن است تلاش شود تا به یک ویژگی که وجود ندارد دسترسی پیدا شود، که می‌تواند منجر به خطاهای زمان اجرا یا رفتارهای غیرمنتظره شود. این مکانیزم برای جلوگیری از این اتفاق و اطمینان از اینکه تنها به ویژگی‌های موجود دسترسی پیدا می‌شود، استفاده می‌شود.


🔸Preventing Lazy Loading

در اینجا نمونه‌ای آورده شده است.

$articles = \App\Models\Article::get();

foreach ($articles as $article) {
echo "<li>" . $article->user->name . "</li>\n";
}


اگر این کد را اجرا کنید، خروجی مورد انتظار شما را نشان می‌دهد. با این حال، این کد رابطه کاربر را به صورت lazy loading بارگیری می‌کند و در هر حلقه یک کوئری جدید ایجاد می‌کند.

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

Attempted to lazy load [user] on model [App\Models\Article] but lazy loading is disabled.


🔸Prevents Silently Discarding Attributes

در اینجا نمونه‌ای از تلاش برای به‌روزرسانی یک ویژگی که قابل پر کردن نیست آورده شده است:

$user->fill(["remember_token" => "bar"]);


حالا این کد یک استثنا برمی‌گرداند:

Add fillable property [remember_token] to allow mass assignment on [App\Models\User].


🔸Prevents Accessing Missing Attributes

فرض کنید ما سعی داریم یک ویژگی در کاربر را نمایش دهیم که ممکن است وجود نداشته باشد:

{{ $user->nonexistant }}


به طور پیش‌فرض، Laravel چیزی نمایش نمی‌دهد زیرا ویژگی پیدا نمی‌شود، اما با فعال بودن حالت Strict شما دریافت می‌کنید:

The attribute [nonexistant] either does not exist or was not retrieved for model [App\Models\User].

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

{{ $user->emial }}


حالا، شما بازخورد فوری دریافت می‌کنید که اشتباه کرده‌اید.

فعال کردن ()Model::shouldBeStrict حالا اولین کاری است که من در هر اپ انجام می‌دهم و به من کمک می‌کند تا از اشتباهات پایه‌ای که ممکن است برای اپ بعدا زیان‌آور باشد، جلوگیری کنم.




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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍266👏1
کانال آموزشی لاراول
Photo
درباره‌ی DB::transaction

در دنیای برنامه‌نویسی وب، اطمینان از اینکه داده‌های شما به درستی و با امنیت در دیتابیس ذخیره می‌شوند، حیاتی است. لاراول، ابزارهایی قدرتمند برای مدیریت این موضوعات ارائه می‌دهد. یکی از این ابزارها، DB::transaction است.

🧐 چیستی DB::transaction:

در لاراول، DB::transaction یک روش برای اجرای دسته‌ای از عملیات دیتابیس است که تضمین می‌کند این عملیات یا همگی با موفقیت انجام می‌شوند، یا هیچ‌کدام اجرا نمی‌شوند. این مفهوم در دنیای دیتابیس با نام ' تراکنش ' شناخته می‌شود.

💡 کاربردهای DB::transaction:

🔸 اطمینان از صحت و یکپارچگی داده‌ها:
هنگامی که چندین عملیات دیتابیس باید به صورت یک مجموعه کامل اجرا شوند.

🔸جلوگیری از تضادهای داده‌ای:
وقتی که عملیات مختلف بر روی یکسری داده‌ها هم‌زمان انجام می‌شوند.

🔸کنترل بهتر بر عملیات‌های پیچیده:
کمک به سازمان‌دهی و مدیریت عملیات‌های دیتابیس که باید به ترتیب خاصی انجام شوند.

🛠 چگونگی استفاده از DB::transaction:

1️⃣ تعریف تراکنش:
ابتدا با استفاده از ()DB::beginTransaction تراکنش را شروع کنید.

2️⃣ اجرای عملیات:
انجام سری عملیات دیتابیس که می‌خواهید در تراکنش گنجانده شوند.

3️⃣ تایید تراکنش:
در صورتی که همه عملیات با موفقیت انجام شدند، با ()DB::commit تراکنش را تایید کنید.

4️⃣ بازگشت در صورت خطا:
در صورت بروز خطا در هر یک از عملیات، با ()DB::rollback تغییرات انجام‌شده را بازگردانید تا داده‌ها به حالت اولیه بازگردند.

⚙️ مثال عملی:

use Illuminate\Support\Facades\DB;

DB::transaction(function () {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
}, 5);


در این مثال، دو عملیات آپدیت و حذف به صورت هم‌زمان اجرا می‌شوند. اگر هر دو عملیات با موفقیت انجام شوند، تراکنش تایید می‌شود. در غیر این صورت، هیچ‌کدام از تغییرات اعمال نمی‌شوند.

🔔 نکات کلیدی:

- استفاده از DB::transaction برای عملیات‌هایی که نیاز به یکپارچگی داده دارند، ضروری است.

- همیشه باید در نظر داشت که تراکنش‌ها می‌توانند بر عملکرد کلی سیستم تأثیر بگذارند، بنابراین باید با دقت استفاده شوند.

- لاراول امکان مدیریت خطاها و بازگشت از تراکنش‌ها را به راحتی فراهم می‌آورد.

🚀 خلاصه:

در لاراول DB::transaction یک روش قدرتمند برای مدیریت تراکنش‌های دیتابیس است که به توسعه‌دهندگان کمک می‌کند تا از یکپارچگی و صحت داده‌ها اطمینان حاصل کنند. این ابزار برای پروژه‌هایی که نیاز به عملیات‌های دیتابیس پیچیده دارند، بسیار مفید است.



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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍86🔥1
کانال آموزشی لاراول
Photo
معرفی فریمورک Lumen - نسخه‌ی میکروی Laravel

🔸یک پروژه‌ی جدید و میکرو-فریمورک، توسط Taylor Otwell، خالق اصلی فریمورک Laravel، به عرصه‌ی برنامه‌نویسی معرفی شده است. Lumen را می‌توان نسخه‌ای سبک‌وزن، سریع و ظریف از Laravel دانست، که به‌ویژه برای توسعه‌ی میکروسرویس‌ها و API‌های واکنش‌گرا در زبان PHP طراحی شده است.

🚀 چرا Lumen؟

📈 سرعت بالا: Lumen با قدرت بیش از 1,700 درخواست در ثانیه، سریع‌تر از همتایان خود Slim (1,250 درخواست/ثانیه) و Silex (950 درخواست/ثانیه) است.

🛠 کدنویسی ساده: با سینتکسی ساده و کاربرپسند، کدنویسی در Lumen برای توسعه‌دهندگان بسیار راحت است.

🔄 قابلیت ارتقا به Laravel: شما می‌توانید در هر زمانی پروژه‌ی Lumen خود را به یک پروژه‌ی کامل Laravel ارتقا دهید.

⚙️ ویژگی‌های کلیدی: شامل سیستم‌هایی چون Fast Route، Event Management، Authentication با توکن‌ها، Caching، Error Logging با استفاده از Monolog و Queuing.

🔍 Laravel یا Lumen ?

- لاراول یک فریمورک کامل و جامع برای توسعه‌ی وب است، در حالی که لومن به‌عنوان یک میکرو-فریمورک برای ساختن میکروسرویس‌ها و API‌ها طراحی شده است.

- لومن (lumen) برخی از ویژگی‌های Laravel مانند سشن‌ها، کوکی‌ها و تمپلیت‌ها را حذف کرده تا سبک‌تر و تخصصی‌تر باشد.

📚 نیازمندی‌های Lumen:

برای استفاده از Lumen، شما به PHP با افزونه‌های OpenSSL، PDO و Mbstring نیاز دارید و همچنین باید Composer را نصب کنید.

چرا ممکن است Lumen مناسب شما نباشد؟

- لومن تنظیمات محدودتری نسبت به Laravel دارد.
- اگر نیاز به ویژگی‌های پیچیده‌ی Routing سیستم Symfony دارید، Laravel گزینه‌ی بهتری است.

- لومن کمتر شناخته‌شده است و کمتر مورد استفاده قرار گرفته نسبت به Laravel.

🏁 جمع‌بندی:

لومن (lumen)، میکروفریمورکی مدرن و سریع برای PHP، انتخاب عالی برای توسعه‌ی میکروسرویس‌ها و API‌های سریع و کارآمد است. با این حال، اگر نیاز به قابلیت‌های جامع‌تری دارید، Laravel ممکن است انتخاب بهتری باشد.

👍 نصب و تست Lumen ساده است و ارزش امتحان کردن را دارد. هر زمان که بخواهید، می‌توانید Lumen را به یک پروژه‌ی کامل Laravel ارتقا دهید.

🔗 وبسایت رسمی Lumen



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

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍81🔥1👏1