آموزش لاراول | LaravelHub

Channel
Logo of the Telegram channel آموزش لاراول | LaravelHub
@laravelhubPromote
170
subscribers
کانال آموزشی لاراول LaravelHub ادمین : @special_one
didishop.zip
12.5 MB
قالب بسیار زیبای فروشگاهیی DIdiShop مشابه دیجی کالا
دمو رو میتونید تو پست بعدی ببینید

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
بچه‌ها سلام! 👋🏻

امروز می‌خوام یه نکته خفن تو لاراول رو باهاتون به اشتراک بذارم. فرض کن می‌خوای از یه جدول خاص (مثلاً categories) چندتا رکورد مشخص رو برداری، اونم فقط جدیدترین‌هاش. بیاید یه سناریو واقعی رو با هم بررسی کنیم.

فرض کن آیدی‌هایی که می‌خوای [42, 43, 44, 47] هستن. حالا باید این رکوردها رو بر اساس created_at (یعنی تاریخ ایجادشون) مرتب کنی و ۴ تا رو بگیری. کد زیر دقیقاً همین کار رو می‌کنه:

$categories = Category::whereIn('id', [42, 43, 44, 47])
->orderBy('created_at', 'desc')
->get();


چی کار می‌کنه؟
whereIn:
میاد می‌گه فقط رکوردهایی رو بیار که آیدیشون تو این لیسته.
orderBy:
بر اساس created_at به ترتیب نزولی مرتب می‌کنه.
get():
و در نهایت، رکوردها رو میاره.
با این روش ۴ رکوردی که آیدیشون تو لیست هست رو می‌گیری.

حالا چرا این خوبه؟
مثلاً وقتی می‌خوای دسته‌بندی‌های خاصی رو تو صفحه اول سایتت نمایش بدی، می‌تونی با همین کوئری خیلی شیک و سریع این کار رو انجام بدی. 😎

اگه سوالی داشتید یا جایی گیر کردید، بپرسید. 💬
مطمئن باشید که تو کانال همیشه جوابگو هستم! 😍


🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
This media is not supported in your browser
VIEW IN TELEGRAM
سلام دوستان
توی این پست قراره بهتون توضیح بدیم چجوری با روش ساده تری و سریع تر، مشکل MySQL توی زمپ رو برطرف کنید.

1- فایلی که در پست پایین قرار میدم رو دانلود کنید و توی یه پوشه یا دسکتاپ قرارش بدید.
2- وارد اون پوشه بشید و ترمینال رو باز کنید
3- دستور
.\solveMysqlProblem.ps1

رو بزنید تا اسکریپت ران بشه
4- تبریک میگم. مشکل شما برطرف شده😁👌

نکته: اگر پوشه زمپ مکان غیر از c:\xampp قرار داره، اینجوری اسکریپت رو فراخوانی کنید

.\solveMysqlProblem.ps1 "your folder"


اگر باگی دیدید یا پیشنهادی دارید به من پیام بدید.
@AliFotoohi
موفق باشید

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
شما از چه مرورگری استفاده میکنید؟
Anonymous Poll
77%
Chrome
28%
FireFox
5%
Microsoft Edge
7%
Opera
This media is not supported in your browser
VIEW IN TELEGRAM
سلام 👋🏻
امروز میخوام آموزش رفع مشکل MySQL توی xampp رو بدم.

1- ابتدا سرویس Apache و mysql را stop کرده و سپس xampp را ببندید.
2- وارد پوشه data در درایوی که زمپ نصب شده است در مسیر : xampp>mysql>data شوید.
3- نام پوشه data را به نام دیگری تغییر دهید. به طور مثال: data_old
4- سپس یک پوشه جدید به نام data ایجاد کنید.
5- فایل های موجود در مسیر mysql/backup را در فولدر mysql/data کپی کنید.
6- فولدرهای درون data_old را در پوشه جدید کپی کنید. (به جز فولدرهای mysql, performance_schema و phpmyadmin)
7- فایل ibdata1 را از فولدر data_old به پوشه mysql/data کپی کنید.
8- نرم افزار زمپ را مجدد باز کرده و Apache و mysql را Start کنید.

اگر مشکلی هم دارین میتونین به آیدی من پیام بدین تا در قالب یه پست یا ویدیو با هم رفعش کنیم.
@Special_One

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
اگر دنبال دور زدن تحریم ها هستین 403 میتونه یه انتخاب خوب باشه
ولی یه مشکلی داره که وقتی سرویسی رو چک میکنی درست جواب نمیده و اگر تحریم باشه گردن نمیکیره 😁
ولی در کل سرویس های زیادی رو پشتیبانی میکنه و عالیه !!!

https://403.online

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
حل مشکل اجرای Apache در xampp
اجرای دستور زیر در CMD (اجرا با دسترسی administrator )

net stop http


🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
Media is too big
VIEW IN TELEGRAM
سلام 👋🏻
آشنایی با تست نویسی تو لاارول رو ضبط کردم دیگه حوصله ادیت و این حرفا رو نداشتم اگه وقت شد توابع دیگه تست نویسی رو تو قالب پست واستون مینویسم .

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
🔥 آموزش Broadcasting توی لاراول (با مثال) 🔥

رفقا، امروز می‌خوایم بریم سراغ یه قابلیت خف ن تو لاراول به اسم Broadcasting! با این قابلیت می‌تونین یه‌سری رویدادها رو زنده (real-time) برای کاربرهاتون بفرستین. یعنی مثلاً تو چت آنلاین، اعلان‌های لحظه‌ای یا هر چیز دیگه که لازمه سریع به کاربر برسه، این خیلی کارآمده. 😎

خب بریم ببینیم چجوری می‌تونیم این کار رو انجام بدیم! 👇

قبل از هرچیزی باید Broadcasting رو تو پروژه‌تون راه بندازین. توی فایل .env، بیاین و Broadcasting رو روی سرویس Pusher تنظیم کنیم. البته می‌تونین Redis یا Socket.io هم استفاده کنین، ولی اینجا با Pusher می‌ریم جلو. 💻

تو فایل .env اینا رو اضافه کنین:

BROADCAST_DRIVER=pusher

PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1

بعدش باید کتابخونه pusher رو نصب کنین:
composer require pusher/pusher-php-server

حالا میریم سراغ تنظیمات بیشتر!
بعد از تنظیمات اولیه، باید یه سری کانفیگ توی فایل config/broadcasting.php انجام بدیم. تو این فایل، Pusher رو به عنوان درایور انتخاب کنید:
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
],

حالا وقتشه یه ایونت درست کنیم! با دستور زیر یه ایونت به اسم MessageSent می‌سازیم:

php artisan make:event MessageSent

این دستور یه کلاس توی پوشه app/Events می‌سازه. حالا بیاین تو این فایل کد زیر رو اضافه کنیم:
class MessageSent implements ShouldBroadcast
{
public $message;

public function __construct($message)
{
$this->message = $message;
}

public function broadcastOn()
{
return new Channel('chat');
}
}

تو این مثال، وقتی یه پیغام ارسال می‌شه، ما این ایونت رو برای کانال chat broadcast می‌کنیم. ✉️
حالا باید توی کدی که داریم، ایونت رو بفرستیم. مثلاً توی کنترلر:

event(new MessageSent('سلام! این یه پیام لایو از طرف علیرضا هست'));

این کد باعث می‌شه که پیغام به صورت real-time بره برای کسایی که تو کانال chat عضو هستن. 💬
برای اینکه از طرف کاربرها پیام‌ها رو دریافت کنیم، باید توی سمت فرانت هم یه سری تنظیمات انجام بدیم. اگه از Vue.js یا React استفاده می‌کنین، می‌تونین از Laravel Echo استفاده کنین که کدتون رو خیلی راحت‌تر و تمیزتر می‌کنه.

اول laravel-echo و pusher-js رو نصب کنین:

npm install --save laravel-echo pusher-js

بعد توی فایل جاوااسکریپت‌تون، چیزی مثل این رو تنظیم کنین:
import Echo from "laravel-echo";
window.Pusher = require('pusher-js');

window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true
});

window.Echo.channel('chat')
.listen('MessageSent', (e) => {
console.log(e.message);
});

به همین راحتی! وقتی پیامی ارسال بشه، شما اون رو از طریق جاوااسکریپت توی مرورگر می‌گیرید و می‌تونید هر کاری که می‌خواید باهاش انجام بدید! 😍
خلاصه اگه یه اپلیکیشن دارین که نیاز به رویدادهای زنده داره، Broadcasting تو لاراول می‌تونه بهترین راه‌حل باشه. با استفاده از Pusher و Laravel Echo، کارتون خیلی سریع و تمیز انجام می‌شه.

سوالی داشتین تو کامنت‌ها بپرسین! 😁

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
سلام 👋
آموزش Advanced Caching با استفاده از tags برای بخش‌بندی کش

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

مثال استفاده:
Cache::tags(['users', 'posts'])->put('user_posts', $data, 60);
Cache::tags(['users'])->flush(); // فقط کش کاربران را پاک می‌کند


🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
دوستان در مورد چه چیزی آموزش بزارم داخل کانال؟

پیشنهادات خودتون رو کامنت کنید.

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
سلام 👋
شاید این مورد رو زیاد دیدین که "تبدیل متن به گفتار" اما چطور میتوینم پیاده سازیش کنیم! شاید بگین حتما مدل های زیادی میخوایم یا .... خب اینارو بیخیال بیاین این رو با جاوااسکریپت پیاده سازی کنیم.

<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Convert Text to Speech - LaravelHub</title>
</head>
<body>
<script>
var Message = new SpeechSynthesisUtterance();
Message.text = "Welcome To LaravelHub"
window.speechSynthesis.speak(Message);
</script>
</body>

</html>


وقتی اجرا کنید متن رو واستون میخونه.

نکته: این مورد متاسفانه مثل همه چیز از فارسی پشتیبانی نمیکنه 🥲

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
سلام 👋
〽️ موضوع آموزش
str_pad
فک کنید ما یه فاکتور میخوایم برای مشتری چاپ کنیم که میخوایم شماره فاکتور ها یکسان باشه از نظر طول یا هر مثالی که تو ذهنتون هست منظور از یکسان بودن اینه، صبر کند براتون یه مثال بزنم:

📜در حالت عادی شماره فاکتور های ما اینطوری هست:
1|product 1 |
————————
100|product 2 |
————————
900|product 3 |
————————
50|product 4 |
————————
یه برنامه نویس معمولی چطوری کد میزنه؟

<?php
function number($input, $len, $padstr) {
$inputlen = strlen($input);
if ($inputlen >= $len) {
return $input;
}
$padd_str = "";
while (strlen($padd_str) + $inputlen < $len) {
$padd_str .= $padstr;
}
return $padd_str . $input;
}
$factor_number = 20
simple_str_pad($factor_number, 6, "0");


اما یه برنامه نویس با تجربه میاد اینطوری کد میزنه

$factor_number = 20
$uniqueId = str_pad($factor_number, 6, "0", STR_PAD_LEFT);


خروجی دو مورد هم یکی هست اما این و کجا و آن کجا....
افترر
1|product 1 |
————————
100| product 2 |
————————
900| product 3 |
————————
50| product 4 |
————————
بفترر
000001 | product 1 |
————————
000100 | product 2 |
————————
000900 | product 3 |
————————
000050 | product 4 |
————————

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
یه چیزی رو باید جدی بگم!برنامه‌نویسا نباید زیاد از chatgpt استفاده کنن. می‌دونم، وسوسه‌انگیزه که وقتی گیر می‌کنی سریع بیای و بپرسی، ولی اگه همیشه این کار رو بکنی، به مرور خودت رو ضعیف می‌کنی. چرا؟ چون وقتی زیاد از chatgpt کمک می‌گیری، مغزت عادت می‌کنه به اینکه یکی دیگه برات فکر کنه. اینجوری کم‌کم حافظه‌ات ضعیف می‌شه و دیگه اون قدرت تجزیه‌ و تحلیل یا حل مسئله که یه برنامه‌نویس خوب باید داشته باشه رو از دست می‌دی از طرف دیگه، کد زدن یه مهارته که با تمرین و اشتباه کردن بهتر می‌شه. وقتی خودت با چالش‌ها کلنجار بری، حتی اگه یه ساعت وقتت رو بگیره، به یادگیری‌ات کلی کمک می‌کنه. ولی اگه فقط بیای سوال کنی و جواب آماده بگیری، دیگه این پروسه یادگیری اتفاق نمی‌افته و بعدش به هر مسئله‌ای برخورد کنی، باز سریع می‌خوای بیای بپرسی. پس بهتره هر وقت واقعاً گیر کردی بیای سراغ chatgpt نه واسه هر چیز کوچیکی.
یاد بگیر به خودت اعتماد کنی، با مشکلات دست و پنجه نرم کنی، و یادت باشه که ذهن یه برنامه‌نویس باید همیشه فعال و خلاق بمونه!


🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
سلام دوستان 👋

برای انتخاب بهترین هاست جهت اجرای پروژه‌های لاراول، باید به چندین عامل کلیدی توجه کنید که بر اساس نیازهای شما، از پروژه‌های کوچک تا بزرگ و پیچیده، تغییر می‌کنند. در اینجا توضیحی جامع و کامل درباره نوع هاست و ویژگی‌های هرکدام ارائه می‌شود تا بتوانید بهتر تصمیم بگیرید:

🛠 سیستم‌عامل مناسب برای لاراول
در اغلب موارد، برای میزبانی لاراول از لینوکس استفاده می‌شود، چون از نظر پایداری، امنیت و سرعت عملکرد بهتری دارد. سیستم‌عامل‌های محبوب برای سرور لاراول عبارت‌اند از:
Ubuntu:
یکی از محبوب‌ترین توزیع‌های لینوکس برای هاستینگ است. نسخه‌های LTS (Long-Term Support) مثل 20.04 و 22.04 از پشتیبانی بلندمدت برخوردار هستند و برای سرورهای پایدار مناسب‌اند.
CentOS:
مخصوصاً برای هاست‌هایی که از پنل‌های مدیریت مانند cPanel یا DirectAdmin استفاده می‌کنند، این توزیع لینوکس گزینه‌ای مناسب است.
Debian:
توزیعی پایدار و مناسب برای کسانی که به دنبال یک سیستم عامل سبک و امن هستند.
برای پروژه‌های خاص و کوچک‌تر، می‌توانید از Windows Hosting هم استفاده کنید، اما به طور کلی، لینوکس پشتیبانی بهتری از لاراول و PHP دارد.

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

Nginx:
به دلیل سبک بودن و عملکرد سریع‌تر، مخصوصاً در پروژه‌هایی با ترافیک بالا توصیه می‌شود. این وب‌سرور از منابع کمتری استفاده می‌کند و برای مدیریت درخواست‌های همزمان بسیار بهتر عمل می‌کند.
Apache:
یک وب‌سرور سازگار و محبوب است که انعطاف‌پذیری بیشتری در تنظیمات دارد، ولی نسبت به Nginx سنگین‌تر است. اگر از پروژه‌هایی با پیکربندی پیچیده استفاده می‌کنید، Apache ممکن است گزینه مناسب‌تری باشد.

📜 انتخاب نسخه PHP
برای عملکرد بهینه لاراول، باید از جدیدترین نسخه‌های PHP استفاده کنید. نسخه‌های PHP 8.0 و 8.1 بهترین انتخاب‌ها هستند، چرا که امنیت بیشتر و عملکرد بهتری نسبت به نسخه‌های قبلی دارند. همچنین اطمینان حاصل کنید که هاست شما از PHP-FPM پشتیبانی کند که باعث بهبود مدیریت درخواست‌ها و افزایش سرعت پاسخگویی سرور می‌شود.

〽️ انتخاب پایگاه‌داده
لاراول از چندین نوع پایگاه داده پشتیبانی می‌کند، و انتخاب پایگاه داده به نیاز پروژه شما بستگی دارد:

MySQL یا MariaDB:
این دو گزینه محبوب و استاندارد برای اکثر پروژه‌ها هستند. MariaDB سریع‌تر و بهتر بهینه‌سازی شده است.
PostgreSQL:
اگر پروژه شما به ویژگی‌های پیشرفته‌تر پایگاه داده و کارایی بهتر در مدیریت داده‌های پیچیده نیاز دارد، PostgreSQL یک انتخاب عالی است.
SQLite:
مناسب برای پروژه‌های کوچک یا در مرحله توسعه محلی. سبک و ساده است، اما برای پروژه‌های بزرگ توصیه نمی‌شود.

💻 منابع سخت‌افزاری مورد نیاز
RAM:
حداقل ۲ گیگابایت RAM برای پروژه‌های کوچک کافی است، اما اگر پروژه شما متوسط یا بزرگ است، باید حداقل ۴ گیگابایت یا بیشتر RAM داشته باشید.
CPU:
پردازنده‌های چند هسته‌ای با سرعت بالا برای مدیریت درخواست‌های همزمان ضروری هستند. برای پروژه‌های متوسط به بالا، پردازنده‌های ۴ یا ۸ هسته‌ای توصیه می‌شوند.
Disk:
استفاده از SSD به جای هارددیسک‌های سنتی توصیه می‌شود. SSD به دلیل سرعت بالای خواندن و نوشتن داده، زمان بارگذاری صفحات را به طور چشمگیری کاهش می‌دهد.
Bandwidth + Traffic :
بسته به تعداد کاربران و حجم داده‌هایی که جابجا می‌کنید، هاست باید پهنای باند مناسب و بدون محدودیت شدید داشته باشد.

📞 پشتیبانی از ابزارهای توسعه
هاست شما باید از ابزارهای توسعه لاراول پشتیبانی کند:

Composer: برای مدیریت پکیج‌های لاراول ضروری است.
Git: برای کنترل نسخه و مدیریت پروژه.
Node.js و NPM: برای اجرای ابزارهای فرانت‌اند مانند Vite که در لاراول ۹ و ۱۰ به شدت استفاده می‌شود.

🖥 انواع هاست
با توجه به نیاز پروژه خود، باید نوع مناسب هاست را انتخاب کنید:
هاست اشتراکی (Shared Hosting): برای پروژه‌های کوچک و سایت‌های کم‌ترافیک مناسب است. اما به دلیل به اشتراک‌گذاری منابع با سایر سایت‌ها، سرعت و پایداری کمتری دارد.
VPS (سرور مجازی):
منابع اختصاصی بیشتری ارائه می‌دهد و برای پروژه‌های متوسط و بزرگ مناسب‌تر است. شما می‌توانید کنترل بیشتری بر روی تنظیمات سرور داشته باشید.
Dedicated Server (سرور اختصاصی):
بهترین گزینه برای پروژه‌های بزرگ و پرترافیک که نیاز به منابع کاملاً اختصاصی دارند. این سرورها پرهزینه هستند اما عملکرد و پایداری بالایی دارند.
Cloud Hosting:
سرویس‌های ابری انعطاف‌پذیری بالایی دارند و منابع سرور به صورت دینامیک بر اساس نیاز پروژه تنظیم می‌شوند. گزینه مناسبی برای پروژه‌های مقیاس‌پذیر است.
موفق باشید

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
چطور امنیت هاستینگ را تأمین کنیم؟ 🛡

سلام دوستان 👋

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

🔐 استفاده از SSL/TLS
یکی از اولین و مهم‌ترین اقدامات برای تأمین امنیت هاستینگ، فعال‌سازی SSL است. با فعال کردن گواهی SSL، اطلاعات بین کاربر و سرور شما به‌صورت رمزگذاری شده منتقل می‌شود که از دسترسی افراد غیرمجاز به اطلاعات حساس جلوگیری می‌کند.

🔑 تغییر دسترسی‌ها به فایل‌ها و پوشه‌ها
دسترسی فایل‌ها و پوشه‌های مهم را به درستی تنظیم کنید. مثلاً دسترسی پوشه public_html باید به حداقل‌ترین حالت یعنی 755 تنظیم شود. فایل‌های حساس مثل config.php نیز باید دسترسی محدودتری داشته باشند.

🛠 استفاده از فایروال (Firewall)
فعال‌سازی یک فایروال مناسب می‌تواند جلوی ترافیک‌های مشکوک و حملات مانند DDoS را بگیرد. بسیاری از هاستینگ‌ها فایروال نرم‌افزاری را ارائه می‌دهند، اما می‌توانید از ابزارهای دیگری مانند Cloudflare نیز برای امنیت بیشتر استفاده کنید.

🔄 بروزرسانی منظم نرم‌افزارها
اطمینان حاصل کنید که همیشه از آخرین نسخه‌های سیستم‌عامل و نرم‌افزارهای مورد استفاده در سرور خود استفاده می‌کنید. بروز رسانی‌ها معمولاً شامل رفع آسیب‌پذیری‌های امنیتی مهم هستند.

🛡 استفاده از رمزهای قوی و احراز هویت دو عاملی (2FA)
از رمزهای قوی و پیچیده برای پنل مدیریت هاست، FTP و سایر سرویس‌های مرتبط استفاده کنید. همچنین با فعال کردن احراز هویت دو عاملی، امنیت ورود به حساب‌هایتان را افزایش دهید.

🧹 پاکسازی فایل‌ها و افزونه‌های غیرضروری
همیشه فایل‌ها، افزونه‌ها و اسکریپت‌های قدیمی و غیرضروری را حذف کنید تا از سوءاستفاده احتمالی از آن‌ها جلوگیری شود.

📜 نظارت بر لاگ‌ها
لاگ‌های مربوط به فعالیت‌های سرور را به صورت منظم بررسی کنید. این کار به شما کمک می‌کند تا هرگونه فعالیت مشکوک یا نفوذ را به سرعت شناسایی کنید.

🔒 محدود کردن دسترسی‌های ریموت (Remote Access)
در صورت نیاز به دسترسی ریموت (مانند SSH)، این دسترسی را فقط به IPهای مشخص و از طریق کلیدهای SSH محدود کنید. همچنین از پورت‌های پیش‌فرض (مانند پورت 22) استفاده نکنید و آن‌ها را تغییر دهید.

این نکات می‌توانند به شما کمک کنند تا امنیت هاستینگ خود را افزایش دهید و از داده‌ها و اپلیکیشن‌های خود در برابر حملات محافظت کنید. نظرات و تجربیات خود را با ما به اشتراک بگذارید! 💬👇

🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
دستورات پیشرفته Eloquent در لاراول ⚡️

سلام دوستان 👋

امروز می‌خواهیم در مورد دستورات پیشرفته Eloquent در لاراول صحبت کنیم که به شما اجازه می‌دهند کوئری‌های پیچیده و بهینه‌تری بنویسید. اگر به دنبال راه‌هایی برای بهبود عملکرد کوئری‌های خود هستید، این پست مخصوص شماست! 🛠

🔄 استفاده از Subquery‌ها

با استفاده از Subqueryها، می‌توانید زیر کوئری‌ها را در کوئری‌های اصلی خود ترکیب کنید. این ویژگی به شما اجازه می‌دهد تا داده‌های مرتبط را بدون نیاز به جوین‌های پیچیده به دست آورید.

مثال:

$latestOrders = Order::select('id', 'user_id')
->where('status', 'completed')
->orderBy('created_at', 'desc')
->limit(5);

$users = User::select('name')
->addSelect(['last_order' => $latestOrders])
->get();


👥استفاده از Relations With Count

گاهی نیاز دارید تعداد آیتم‌های مرتبط با یک مدل را به‌همراه خود مدل‌ها دریافت کنید. با استفاده از withCount می‌توانید به راحتی تعداد روابط را در کوئری خود اضافه کنید.

مثال:

$posts = Post::withCount('comments')->get();


در این حالت، تعداد کامنت‌های هر پست به‌عنوان یک فیلد جدید به هر پست اضافه می‌شود.

🔄استفاده Lazy Loading و Eager Loading

یکی از قابلیت‌های قدرتمند Eloquent، مدیریت بارگذاری داده‌های مرتبط است. با استفاده از lazy loading و eager loading می‌توانید نحوه بارگذاری داده‌های مرتبط را بهینه کنید تا کوئری‌های اضافی کمتر اجرا شود.

مثال:

// Eager Loading
$posts = Post::with('comments')->get();


در اینجا لاراول همزمان با پست‌ها، کامنت‌های مرتبط را نیز بارگذاری می‌کند تا از کوئری‌های اضافه جلوگیری شود.

🔄 استفاده از Aggregation

Eloquent قابلیت‌های تجمیعی مانند count، sum، avg و max را فراهم می‌کند تا بتوانید مقادیر آماری را به‌سادگی محاسبه کنید.

مثال:

$totalSales = Order::where('status', 'completed')->sum('price');


در این مثال، مجموع قیمت سفارش‌های تکمیل‌شده محاسبه می‌شود.

🔧استفاده Raw Expressions

اگر نیاز به اجرای دستورات SQL خام دارید، می‌توانید از Raw Expressions استفاده کنید تا دستورات سفارشی SQL را به کوئری‌های Eloquent خود اضافه کنید.

مثال:

$users = User::selectRaw('count(*) as user_count, status')
->groupBy('status')
->get();


☘️ این دستورات پیشرفته به شما کمک می‌کنند تا کنترل بیشتری روی داده‌های خود داشته باشید و کوئری‌های بهینه‌تری بنویسید. تجربه استفاده از این دستورات رو داشتید؟ برامون کامنت بذارید! 💬👇


🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub
یه نکته #laravel ای 🤔
اگر بخواید برای پستتون، شمارنده بازدید بزارید، کدوم راه بهتره:

۱- استفاده از خود #controller، و همونجا یکی به فیلد مثلا #visit_count اضافه کنیم؟

۲- استفاده از #middelware. در #route مربوط به پست، استفاده کنیم و توش، #visit_count رو زیاد کنیم؟

۳- استفاده از #event_listener، اینطوری که هر بار ایونت seen شد، این بره یکی به visit_count ها اضافه کنه؟


شخصا تجربه ای که داشتم، راحت ترین راه اینه که توی خوده #controller پیاده بشه. #آما... اگر قابل توسعه بودن کد براتون مهمه و میخواید تمیز پیاده سازی کنید این رو، پیشنهاد میکنم از #event_listener استفاده کنید.

#middleware رو چرا نگفتم؟

هر کسی را بهر کاری ساختند... میدلور وظیفش مثل فیلتر است. شما تو کد هر کاری دلت بخواد میتونی بکنی ولی، درستش اینه که middleware رو برای چیز هایی از قبیل:
authentication, route peotects, role management
استفاده کنید.

آموزش ایونت لیسنر هم میزارم سیتون😁💪.

یا حق.
@LaravelHub
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Find friends or serious relationships easily