کانال آموزشی لاراول
3.06K subscribers
120 photos
4 videos
38 links
📌 کانال اتاق برنامه نویسی
@PapiDon_coding
Download Telegram
What you do is what matters, not what you think or say or plan.

کاری که انجام می‌دهید مهم است، نه اینکه چه فکر یا چه حرف یا چه برنامه‌ای دارید. - " جیسون فراید"


📌 @PapiDon_state
👍71
کانال آموزشی لاراول
Photo
🛠 کوئری زدن در لاراول

در لاراول، با بهره‌گیری از توابع گوناگون، می‌توانید انواع جستجوها و کوئری‌ها را برای دیتابیس خود تنظیم و اجرا کنید.

1️⃣ whereNull:
- جستجوی سطرهایی که مقدار خاصی در یک ستون خالی است.
- 📌 User::whereNull('email_verified_at')->get();

2️⃣ whereDate:
- جستجوی سطرهایی با مقدار تاریخی خاص در یک ستون.
- 📌 User::whereDate('created_at', '2023-10-10')->get();

3️⃣ whereMonth:
- جستجوی سطرهایی با مقدار ماهی خاص در یک ستون تاریخی.
- 📌 User::whereMonth('created_at', '10')->get();

4️⃣ whereDay:
- جستجوی سطرهایی با مقدار روزی خاص در یک ستون تاریخی.
- 📌 User::whereDay('created_at', '10')->get();

5️⃣ whereYear:
- جستجوی سطرهایی با مقدار سالی خاص در یک ستون تاریخی.
- 📌 User::whereYear('created_at', '2023')->get();

6️⃣ whereTime:
- جستجوی سطرهایی با مقدار زمانی خاص در یک ستون.
- 📌 User::whereTime('created_at', '=', '10:00:00')->get();

7️⃣ whereColumn:
- مقایسه مقادیر دو ستون با یکدیگر و یافتن سطرهای مطابق.
- 📌 User::whereColumn('updated_at', '>', 'created_at')->get();

8️⃣ whereExists:
- جستجو بر اساس شرط موجود.
- 📌

   User::whereExists(function ($query) {
$query->select(DB::raw(1))
->from('orders')
->whereColumn('users.id', 'orders.user_id');
})->get();


📌 @PapiDon_state
👍72💯1
کانال آموزشی لاراول
Photo
🔍 توابع پیشرفته کوئری در لاراول

⚙️با استفاده از توابع زیر می‌توانید جستجوهای پیچیده‌تر و دقیق‌تری در دیتابیس خود انجام دهید:

1️⃣ whereBetween / orWhereBetween:
- بررسی می‌کند که آیا مقدار یک ستون بین دو مقدار مشخص است یا خیر.
- 📌 ->whereBetween('votes', [1, 100])

2️⃣ whereNotBetween / orWhereNotBetween:
- بررسی می‌کند که آیا مقدار یک ستون خارج از دو مقدار مشخص است یا خیر.
- 📌 ->whereNotBetween('votes', [1, 100])


3️⃣ whereBetweenColumns / orWhereBetweenColumns:
- بررسی می‌کند که آیا مقدار یک ستون بین مقادیر دو ستون دیگر در همان ردیف است یا خیر.
- 📌 ->whereBetweenColumns('weight', ['minimum_allowed_weight', 'maximum_allowed_weight'])


4️⃣ whereNotBetweenColumns / orWhereNotBetweenColumns:
- بررسی می‌کند که آیا مقدار یک ستون خارج از مقادیر دو ستون دیگر در همان ردیف است یا خیر.
- 📌 ->whereNotBetweenColumns('weight', ['minimum_allowed_weight', 'maximum_allowed_weight'])




برای آموزش‌های بیشتر با ما همراه باشید!
📌 @PapiDon_state
👍12🔥2
🔎 بررسی متد ()Array.prototype.flat

در برنامه‌نویسی با جاوااسکریپت، گاهی اوقات با آرایه‌های چند بعدی سر و کار داریم که نیاز داریم آن‌ها را به یک آرایه تک بعدی تبدیل کنیم. متد ()flat این کار را برای ما آسان می‌کند.

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

📜 مثال کد:

const multiDimensionalArray = [1, [2, 3], [4, [5, 6]]];

const flattenedArray = multiDimensionalArray.flat();

console.log(flattenedArray); // Output: [1, 2, 3, 4, [5, 6]]
در این مثال، ما یک آرایه چند بعدی داریم و با استفاده از متد `()flat`، آن را به یک آرایه تک بعدی تبدیل می‌کنیم.

const deeperFlattenedArray = multiDimensionalArray.flat(2);
console.log(deeperFlattenedArray);

// Output: [1, 2, 3, 4, 5, 6]
در این مثال، با تعیین عمق 2، هر دو سطح از آرایه هموار شده‌اند.


برای آموزش‌های بیشتر با ما همراه باشید!

📌 @PapiDon_state
👍14
👍7🔥42
🔹 معرفی متد mapWithKeys در لاراول 🔹

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

⚙️ نحوه کار با mapWithKeys

1️⃣ ابتدا یک کالکشن می‌سازیم:

use Illuminate\Support\Collection;

$collection = new Collection([
['name' => 'John', 'department' => 'Sales'],
['name' => 'Jane', 'department' => 'Finance']
]);


2️⃣ سپس متد mapWithKeys را فراخوانی کرده و یک تابع می‌دهیم که به ازای هر عنصر در کالکشن، یک آرایه از کلید/مقدار جدید برمی‌گرداند:

$grouped = $collection->mapWithKeys(function ($item, $key) {
return [$item['department'] => $item['name']];
});


3️⃣ در نهایت، ما یک آرایه جدید خواهیم داشت که در آن کلید‌ها نام بخش‌ها و مقادیر نام کارمندان است:

// $grouped will be:
// [
// 'Sales' => 'John',
// 'Finance' => 'Jane'
// ]


📌 @PapiDon_state
👍10
📘آشنایی با Notion: ابزاری جامع برای مدیریت اطلاعات و پروژه‌ها

🔹 آیا تا به حال با مشکل سازماندهی اطلاعات و پروژه‌های خود روبرو شده‌اید؟ Notion پاسخی کارآمد برای شما دارد!

🔸 یک پلتفرم یکپارچه است که به شما این امکان را می‌دهد تا:

📝 یادداشت‌هایتان را به راحتی بنویسید و مدیریت کنید.

🗂 وظایف و پروژه‌های خود را سازماندهی و پیگیری کنید.

📂 اسناد و فایل‌های مختلف را در یک مکان مرکزی ذخیره کنید.

🤝 با تیم‌تان به صورت آنلاین همکاری کنید و اطلاعات را به اشتراک بگذارید.

🔹 قابلیت‌های متنوع Notion شامل:
- ایجاد جداول و دیتابیس‌ها 📊
- طراحی برد‌ برای مدیریت وظایف 📋
- سفارشی‌سازی صفحات بر اساس نیازهای شما 🎨
- ادغام آسان با ابزارهای دیگر مانند Google Calendar, Slack و غیره 🔄

🔸 با Notion، همه چیز در یک مکان واحد و به خوبی سازماندهی شده است. پس از آن برای بهبود بهره‌وری خود و تیم‌تان استفاده کنید!

🔗 برای آغاز کار با Notion به
https://www.notion.so/
مراجعه کنید و اکانت رایگان خود را ایجاد کنید!


📌 @PapiDon_state
👍3🙏3
کانال آموزشی لاراول
Photo
🔹آماده‌سازی داده‌ها قبل از اعتبارسنجی با prepareForValidation

در لاراول، ما همیشه به دنبال تمیز و منظم کردن کدهایمان هستیم و می‌خواهیم اطمینان حاصل کنیم که داده‌هایی که کاربران ارسال می‌کنند، معتبر و آماده پردازش هستند. یکی از تکنیک‌های کاربردی برای این کار استفاده از متد prepareForValidation در کلاس‌های درخواست سفارشی (FormRequest) است.

🔸 چیستی prepareForValidation

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

🔸 چگونگی کار prepareForValidation

فرض کنید می‌خواهید هر درخواست برای ایجاد "موجودیت" جدید در سیستم شما حتما شامل user_id کاربری باشد که در حال ارسال درخواست است. به جای اینکه user_id را در هر فرم ورودی به صورت دستی اضافه کنید، می‌توانید این کار را در سمت سرور و در متد prepareForValidation انجام دهید. نگاهی به کد زیر بیندازید:

protected function prepareForValidation()
{
$this->merge([
'user_id' => $this->user()->id
]);
}

🔸 توضیح کد

در اینجا، ما از متد merge برای اضافه کردن user_id به داده‌های درخواست استفاده می‌کنیم. ()this->user$ به ما اطلاعات کاربری که در حال حاضر وارد شده است را می‌دهد و id آن، شناسه کاربر است. با این روش، user_id به صورت خودکار به درخواست اضافه می‌شود و نیازی نیست که کاربر آن را وارد کند.

🔸 مزایای استفاده از prepareForValidation

- امنیت: از وارد کردن داده‌های نامعتبر یا دستکاری‌شده توسط کاربر جلوگیری می‌کند.

- تمیزی کد: جلوگیری از تکرار کد و حفظ DRY (Don't Repeat Yourself) در کدهای شما.

- صرفه‌جویی در زمان: کمتر نیاز به بررسی و ویرایش فرم‌های ورودی در سمت کلاینت.

🔹 جمع‌بندی

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


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

📌 @PapiDon_state
👍13
کانال آموزشی لاراول
Photo
🔍 همه ما برنامه‌نویس‌ها می‌دونیم که کار با آرایه‌ها جزء جدایی‌ناپذیر کدنویسیه، اما گاهی اوقات با پیچیدگی‌هاش درگیر می‌شیم! 🤯 خوشبختانه لاراول یک جعبه ابزار داره که کار با آرایه‌ها رو لذت‌بخش می‌کنه.

یکی از این ابزارها، کلاس Arr است که مثل یک ابزار قدرتمند برای کار با آرایه‌ها عمل می‌کنه!

🛠 مثلاً، با استفاده از Arr::pluck می‌تونیم راحت از یک لیست بزرگ داده، فقط شماره‌های موبایل رو استخراج کنیم. فرض کنید ما یک آرایه از کاربران داریم و هر کاربر دارای اطلاعاتی مثل نام، ایمیل و شماره موبایل هست:


$users = [
['name' => 'علی', 'email' => 'ali@example.com', 'mobile' => '09123456789'],
['name' => 'زهرا', 'email' => 'zahra@example.com', 'mobile' => '09123456788'],
// و دیگر کاربران...
];

$mobiles = Arr::pluck($users, 'mobile');
// نتیجه: ['09123456789', '09123456788', ...]

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

💡 پس اگه می‌خوای کدنویسی رو برای خودت راحت‌تر کنی، حتما از Arr در پروژه‌هات استفاده کن.

برای کدهای تمیزتر و سریع‌تر، فراموش نکن Illuminate\Support\Arr رو در بالای فایلت اضافه کنی. 😉

اگه ازش استفاده کردی یا اگر این مطلب واست مفید بود یه لایک بزن 😌


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

📌 @PapiDon_state
👍423🎉1
کانال آموزشی لاراول
Photo
🔎 مفهوم Binding Interface to Implementations در Laravel چیست؟

در دنیای برنامه‌نویسی، توانایی جداسازی منطق و عملیات از یکدیگر و ایجاد یک ساختار ماژولار و قابل توسعه، یکی از موارد کلیدی برای ساخت برنامه‌های قابل نگهداری و توسعه است. فریم‌ورک Laravel با ارائه امکانات و اصول برنامه‌نویسی مدرن، به برنامه‌نویسان این امکان را می‌دهد تا با استفاده از بهترین روش‌ها و الگوها، برنامه‌هایی قوی و پایدار بسازند.
یکی از این الگوها، الگوی ارتباط‌دهی بین رابط‌ها و پیاده‌سازی‌ها (Binding Interface to Implementations) است که ما را قادر می‌سازد تا کد را به گونه‌ای بنویسیم که قابل تست، قابل فهم و قابل توسعه باشد.

1️⃣ تعریف رابط (Interface): ابتدا یک رابط تعریف می‌کنیم که متدهای مورد نیاز را مشخص می‌کند.

interface PaymentGatewayInterface {
public function charge($amount);
}


2️⃣ پیاده‌سازی رابط (Implementing the Interface): سپس یک کلاس می‌سازیم که این رابط را پیاده‌سازی می‌کند.

class StripePaymentGateway implements PaymentGatewayInterface {
public function charge($amount) {
// Implementation for charging via Stripe
}
}


3️⃣ ارتباط‌دهی در سرویس پروایدر (Binding in Service Provider): در نهایت، در یک سرویس پروایدر این ارتباط را تعریف می‌کنیم.

public function register()
{
$this->app->bind(
PaymentGatewayInterface::class,
StripePaymentGateway::class
);
}


🔑 کاربرد:
- این تکنیک به ما این امکان را می‌دهد که به راحتی کلاس‌های مختلف را تست کنیم.
- امکان جایگزینی پیاده‌سازی‌ها بدون تغییر در کد اصلی.
- افزایش انعطاف‌پذیری و ترتیب‌پذیری کد.

با استفاده از این مکانیزم، هرجا که Laravel ببیند شما از PaymentGatewayInterface درخواست دارید، نمونه‌ای از StripePaymentGateway فراهم می‌کند، که به شما کمک می‌کند کد خود را بیشتر ماژولار و قابل تست کنید. 🔄💡


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

📌 @PapiDon_state
👍101
خبر جدید برای دوست‌داران Laravel 🧐

📢 تیلور اتول، بنیان‌گذار Laravel، اخیراً از محصول جدیدی به نام "Laravel Pulse" رونمایی کرده است. این ابزار جدید، که قرار است به صورت رایگان و منبع باز عرضه شود، شایعاتی را در مورد اینکه ممکن است یک سیستم بررسی سلامت برای برنامه‌های Laravel باشد، مورد توجه قرار گرفته. انتظار می‌رود این محصول به زودی در کنفرانس Laracon AU به طور کامل معرفی و نمایش داده شود.

ما منتظریم تا ببینیم Laravel Pulse چه قابلیت‌های تازه‌ای را برای توسعه‌دهندگان فراهم می‌آورد و چگونه می‌تواند به بهبود و نگهداری اپلیکیشن‌های ما کمک کند.

🔔 با ما همراه باشید برای آخرین اخبار و به‌روزرسانی‌های Laravel Pulse. 😉

📌 @PapiDon_state
🔥154👍4
سلام به همه دوستان عزیز و گرامی 😊

قبل از هرچیزی لازم تشکر کنیم برای مشارکتتون در نظرسنجی و حضورتون باعث دلگرمی و افتخار ماست. 🫶

بر اساس نظرسنجی که داشتیم، متوجه شدیم که علاقه‌مندید تا محتوا بیشتری پیرامون برنامه نویسی با فریم‌ورک لاراول داشته باشیم. پس با کمال میل، بیشتر مطالب رو به این موضوع اختصاص می‌دیم. 😁😊

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

هدف اینه که یک دایره‌المعارف کامل و جامع در اختیار داشته باشیم تا، شاید همین اطلاعات بتونه در مسیر پیشرفت شغلی و تخصصی‌مون به ما کمک کنه. 😊

باز هم می‌گم، از اینکه با ما هستید و به ما انگیزه می‌دهید، متشکریم🫶❤️😊

امیدوارم همیشه بتونیم مطالبی ارائه بدیم که بتونید با افتخار بگید که از اعضای این کانال هستید. 😊
23👍1👏1
🔐 What is Base64 ?

🌀 یک تکنیک رمزنگاری است که داده‌های دیجیتال مثل تصاویر یا فایل‌ها را به یک رشته متنی تبدیل می‌کند که می‌توان در متن‌ها و ایمیل‌ها به راحتی استفاده کرد. این رشته از حروف الفبا (A-Z, a-z), اعداد (0-9) و نمادهای (+/) تشکیل شده و گاهی با کاراکتر (=) برای پر کردن فضاهای خالی در پایان استفاده می‌شود.

🛠 در لاراول چطور؟

$encoded = base64_encode('متن مورد نظر'); // رمزنگاری
$decoded = base64_decode($encoded); // رمزگشایی


🔗 API & Base64

در نوشتن API، Base64 به خصوص برای ارسال داده‌های فایل مثل تصاویر یا اسناد PDF کاربردی است. به جای ارسال فایل‌های خام، آن‌ها را به Base64 تبدیل می‌کنید و از طریق JSON یا XML می‌فرستید. این روش امنیت و سازگاری داده‌ها را در انتقال اطمینان می‌بخشد.


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

📌 @PapiDon_state
👍151👏1
3
کانال آموزشی لاراول
Photo
🌐 آیا آشنایی با قدرت htmx در لاراول دارید؟

⚙️ htmx
یک ابزار نوآورانه در دنیای توسعه وب است که به شما اجازه می‌دهد تا رابط‌های کاربری پیشرفته و دینامیک را با استفاده از HTML معمولی بسازید - بدون نیاز به JavaScript!

اصلی‌ترین هدف استفاده از htmx چیست؟

- ساده‌سازی: با htmx، امکان استفاده از AJAX، تغییرات CSS، WebSockets و Server Sent Events فراهم می‌شود، و همه این‌ها فقط با اضافه کردن خصوصیات (attributes) به کد HTML!

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

🛠 چرا لاراول چنین گزینه‌ای را معرفی کرده؟

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

- تطابق‌پذیری: htmx به راحتی با معماری MVC لاراول تطابق پیدا می‌کند و توسعه‌دهندگان می‌توانند همزمان از مزایای Blade و htmx استفاده کنند.

🎨 در عمل چگونه کار می‌کند htmx ؟
- به روزرسانی مستقیم بخش‌هایی از صفحه بدون نیاز به بارگیری کامل صفحه.
- افزایش سرعت و پاسخگویی برنامه‌های تک صفحه‌ای (SPA).



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

📌 @PapiDon_state
👍8🔥31