بلاخره اکستنشن جدید Laravel بهصورت رسمی در ورژن بتا منتشر شد.
Extension ID:
برای فهمیدن جزئیات و خفن بودن این اکستنشن میتونید از وبلاگ لاراول نیوز بخونید:
https://laravel-news.com/laravel-vs-code-extension-public-beta
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
Extension ID:
laravel.vscode-laravelبرای فهمیدن جزئیات و خفن بودن این اکستنشن میتونید از وبلاگ لاراول نیوز بخونید:
https://laravel-news.com/laravel-vs-code-extension-public-beta
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
🔥13👍2
فصل پنج - Migrations and Database
بخش اول - تعریف و اجرای Migrationها
در قسمت آخر این بخش به تمامی کامندهای مربوط به مایگریشن ها اشاره می شود.
1- کامند make:migration
این دستور برای ایجاد یک فایل Migration جدید استفاده میشود.
این کامند می تواند دو فلگ —create برای مایگریشن مربوط به ساخت جدول و —table برای مایگریشن های مربوط به ویرایش جدول را نیز دریافت کند.
2- کامند schema:dump
این دستور یک نسخه SQL dump از طرح پایگاه داده (schema) فعلی شما ایجاد میکند. این فایل در مسیر database/schema ذخیره میشود.
این متد نیز تعدادی فلگ دریافت میکند که در ادامه توضیح داده می شود:
- فلگ prune
فایلهای مهاجرت قدیمی (migration) را حذف میکند و تنها یک نسخه dump ایجاد میکند.
- فلگ database
این دستور نسخه SQL از طرح پایگاه داده را برای پایگاه داده مشخصشده ایجاد میکند.
همچنین می توانید هر دو فلگ را همزمان استفاده کنید.
3- کامند migrate
این دستور تمامی فایلهای مهاجرت را که تاکنون اجرا نشدهاند، اجرا میکند و پایگاه داده را بهروز میکند.
این کامند نیز تعدادی فلگ دریافت میکند:
- فلگ pretend
این دستور تغییرات مهاجرت را بدون اعمال واقعی، شبیهسازی میکند. میتوانید ببینید چه کوئریهایی قرار است اجرا شوند.
- فلگ isolated
این دستور مهاجرتها را در یک حالت ایزولهشده (isolated) اجرا میکند. این حالت معمولاً برای جلوگیری از تداخل مهاجرتها در اجراهای همزمان استفاده میشود.
- فلگ force
این دستور برای اجرای مهاجرتها در حالت Production (محیط عملیاتی) استفاده میشود. بهطور پیشفرض، مهاجرتها در Production متوقف میشوند، اما با --force اجرا خواهند شد.
4- کامند migrate:status
این دستور وضعیت مهاجرتها را نشان میدهد. مشخص میکند که کدام فایلهای مهاجرت اجرا شدهاند و کدام هنوز اجرا نشدهاند.
5- کامند migrate:rollback
این دستور آخرین گروه از مهاجرتها (آخرین batch) را برمیگرداند.
این کامند نیز تعدادی فلگ دریافت می کند که در ادامه بررسی می شود:
- فلگ step
این دستور x مرحله از آخرین مهاجرتها را برمیگرداند.
- فلگ batch
این دستور مهاجرتهای batch شماره ۳ را برمیگرداند.
مهاجرتها در اجرای هر بار migrate در یک batch مشخص ذخیره میشوند.
- فلگ pretend
این دستور مهاجرتها را برنمیگرداند، اما تغییرات آن را شبیهسازی کرده و کوئریهای مربوطه را نمایش میدهد.
6- کامند migrate:reset
این دستور همه مهاجرتها را به حالت اول برمیگرداند.
تمامی جداول و تغییرات اعمالشده حذف میشوند.
7- کامند migrate:refresh
این دستور ابتدا تمامی مهاجرتها را برمیگرداند (reset میکند) و سپس آنها را دوباره اجرا میکند.
این متد نیز فلگ هایی دریافت می کند:
- فلگ seed
این دستور همانند دستور قبل عمل میکند، اما علاوه بر آن، seederها را نیز اجرا میکند تا دادههای اولیه وارد پایگاه داده شوند. (سیدر ها در بخش بعدی توضیح داده می شود)
- فلگ step
این دستور x مرحله آخر مهاجرتها را برمیگرداند و دوباره اجرا میکند.
8- کامند migrate:fresh
این دستور تمام جداول پایگاه داده را بهطور کامل حذف میکند و سپس مهاجرتها را دوباره اجرا میکند.
این متد هم فلگ هایی را دریافت می کند:
- فلگ seed
این دستور همانند migrate:fresh عمل میکند، اما پس از اجرای مهاجرتها، seederها را نیز اجرا میکند.
- فلگ database
این دستور نسخه پایگاه داده خاص را از ابتدا میسازد.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش اول - تعریف و اجرای Migrationها
در قسمت آخر این بخش به تمامی کامندهای مربوط به مایگریشن ها اشاره می شود.
1- کامند make:migration
این دستور برای ایجاد یک فایل Migration جدید استفاده میشود.
php artisan make:migration create_flights_table
این کامند می تواند دو فلگ —create برای مایگریشن مربوط به ساخت جدول و —table برای مایگریشن های مربوط به ویرایش جدول را نیز دریافت کند.
php artisan make:migration create_flights_table
--create=flights
php artisan make:migration create_flights_table
--table=flights
2- کامند schema:dump
این دستور یک نسخه SQL dump از طرح پایگاه داده (schema) فعلی شما ایجاد میکند. این فایل در مسیر database/schema ذخیره میشود.
php artisan schema:dump
این متد نیز تعدادی فلگ دریافت میکند که در ادامه توضیح داده می شود:
- فلگ prune
فایلهای مهاجرت قدیمی (migration) را حذف میکند و تنها یک نسخه dump ایجاد میکند.
php artisan schema:dump --prune
- فلگ database
این دستور نسخه SQL از طرح پایگاه داده را برای پایگاه داده مشخصشده ایجاد میکند.
php artisan schema:dump --database=testing
همچنین می توانید هر دو فلگ را همزمان استفاده کنید.
3- کامند migrate
این دستور تمامی فایلهای مهاجرت را که تاکنون اجرا نشدهاند، اجرا میکند و پایگاه داده را بهروز میکند.
php artisan migrate
این کامند نیز تعدادی فلگ دریافت میکند:
- فلگ pretend
این دستور تغییرات مهاجرت را بدون اعمال واقعی، شبیهسازی میکند. میتوانید ببینید چه کوئریهایی قرار است اجرا شوند.
- فلگ isolated
این دستور مهاجرتها را در یک حالت ایزولهشده (isolated) اجرا میکند. این حالت معمولاً برای جلوگیری از تداخل مهاجرتها در اجراهای همزمان استفاده میشود.
php artisan migrate --isolated
- فلگ force
این دستور برای اجرای مهاجرتها در حالت Production (محیط عملیاتی) استفاده میشود. بهطور پیشفرض، مهاجرتها در Production متوقف میشوند، اما با --force اجرا خواهند شد.
4- کامند migrate:status
این دستور وضعیت مهاجرتها را نشان میدهد. مشخص میکند که کدام فایلهای مهاجرت اجرا شدهاند و کدام هنوز اجرا نشدهاند.
php artisan migrate:status
5- کامند migrate:rollback
این دستور آخرین گروه از مهاجرتها (آخرین batch) را برمیگرداند.
این کامند نیز تعدادی فلگ دریافت می کند که در ادامه بررسی می شود:
- فلگ step
این دستور x مرحله از آخرین مهاجرتها را برمیگرداند.
php artisan migrate:rollback --step=5
- فلگ batch
این دستور مهاجرتهای batch شماره ۳ را برمیگرداند.
مهاجرتها در اجرای هر بار migrate در یک batch مشخص ذخیره میشوند.
php artisan migrate:rollback --batch=3
- فلگ pretend
این دستور مهاجرتها را برنمیگرداند، اما تغییرات آن را شبیهسازی کرده و کوئریهای مربوطه را نمایش میدهد.
php artisan migrate:rollback --pretend
6- کامند migrate:reset
این دستور همه مهاجرتها را به حالت اول برمیگرداند.
تمامی جداول و تغییرات اعمالشده حذف میشوند.
php artisan migrate:reset
7- کامند migrate:refresh
این دستور ابتدا تمامی مهاجرتها را برمیگرداند (reset میکند) و سپس آنها را دوباره اجرا میکند.
php artisan migrate:refresh
این متد نیز فلگ هایی دریافت می کند:
- فلگ seed
این دستور همانند دستور قبل عمل میکند، اما علاوه بر آن، seederها را نیز اجرا میکند تا دادههای اولیه وارد پایگاه داده شوند. (سیدر ها در بخش بعدی توضیح داده می شود)
php artisan migrate:refresh --seed
- فلگ step
این دستور x مرحله آخر مهاجرتها را برمیگرداند و دوباره اجرا میکند.
php artisan migrate:refresh --step=5
8- کامند migrate:fresh
این دستور تمام جداول پایگاه داده را بهطور کامل حذف میکند و سپس مهاجرتها را دوباره اجرا میکند.
php artisan migrate:fresh
این متد هم فلگ هایی را دریافت می کند:
- فلگ seed
این دستور همانند migrate:fresh عمل میکند، اما پس از اجرای مهاجرتها، seederها را نیز اجرا میکند.
php artisan migrate:fresh --seed
- فلگ database
این دستور نسخه پایگاه داده خاص را از ابتدا میسازد.
php artisan migrate:fresh --database=admin
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
❤4👍1
فصل پنج - Migrations and Database
بخش دوم - Factories
فکتوریها در لاراول ابزاری برای ایجاد سریع و راحت دادههای نمونه (mock) برای تست و توسعه هستند. با استفاده از فکتوریها، میتوانید به راحتی رکوردهایی را در پایگاه داده تولید کنید، بدون اینکه نیاز باشد به صورت دستی دادهها را وارد کنید.
در تستهای خودکار، میتوانید با استفاده از فکتوریها دادههای نمونه ایجاد کنید تا رفتار اپلیکیشن خود را آزمایش کنید.
ساخت یک فکتوری:
برای ساخت فکتوری، می توانید از دستور زیر استفاده کنید:
این دستور یک فکتوری با نام UserFactory برای شما در مسیر database/factories ایجاد می کند.
در فایل فکتوری که ایجاد شده، میتوانید دادههای پیشفرض را تعریف کنید.
مثال: تعریف یک فکتوری برای مدل User:
هر فیلد جدول، مقدار پیشفرضی در اینجا دارد که به صورت خودکار تولید میشود.
استفاده از فکتوری:
برای تولید یک رکورد در پایگاه داده:
این کد یک رکورد تست برای شما ایجاد می کند.
برای تولید چندین رکورد:
این کد به تعداد مشخص شده، رکورد تست برای شما ایجاد می کند.
برای ایجاد یک رکورد ولی بدون ذخیره کردن آن:
این کد یک رکورد تست برای شما ایجاد می کند اما در دیتابیس ذخیره نمی کند.
مثال کامل:
فرض کنید یک جدول برای مقالات (Posts) دارید.
این کد یک جمله رندوم برای title، یک پاراگراف رندوم برای content، و یک کاربر جدید برای user_id ایجاد می کند.
فرض کنید می خواهیم 100 پست تستی ایجاد کنیم:
این فکتوری به سادگی 100 پست تستی برای شما ایجاد خواهد کرد.
فکتوریها ابزاری قدرتمند برای تولید دادههای تستی و توسعه هستند.
به کمک آنها میتوانید بهسرعت دادههای مرتبط ایجاد کرده و تستهای خود را سادهتر و سریعتر انجام دهید.
فکتوریها انعطافپذیر هستند و میتوانید شرایط مختلف (مانند ایجاد رکوردهای مرتبط) را پیادهسازی کنید.
در پست های بعدی به طور کامل به فکتوری ها خواهیم پرداخت.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش دوم - Factories
فکتوریها در لاراول ابزاری برای ایجاد سریع و راحت دادههای نمونه (mock) برای تست و توسعه هستند. با استفاده از فکتوریها، میتوانید به راحتی رکوردهایی را در پایگاه داده تولید کنید، بدون اینکه نیاز باشد به صورت دستی دادهها را وارد کنید.
در تستهای خودکار، میتوانید با استفاده از فکتوریها دادههای نمونه ایجاد کنید تا رفتار اپلیکیشن خود را آزمایش کنید.
ساخت یک فکتوری:
برای ساخت فکتوری، می توانید از دستور زیر استفاده کنید:
php artisan make:factory UserFactory
این دستور یک فکتوری با نام UserFactory برای شما در مسیر database/factories ایجاد می کند.
در فایل فکتوری که ایجاد شده، میتوانید دادههای پیشفرض را تعریف کنید.
مثال: تعریف یک فکتوری برای مدل User:
class UserFactory extends Factory
{
protected $model = \App\Models\User::class;
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => bcrypt('password'),
'remember_token' => Str::random(10),
];
}
}
هر فیلد جدول، مقدار پیشفرضی در اینجا دارد که به صورت خودکار تولید میشود.
استفاده از فکتوری:
برای تولید یک رکورد در پایگاه داده:
User::factory()->create();
این کد یک رکورد تست برای شما ایجاد می کند.
برای تولید چندین رکورد:
User::factory()->count(10)->create();
این کد به تعداد مشخص شده، رکورد تست برای شما ایجاد می کند.
برای ایجاد یک رکورد ولی بدون ذخیره کردن آن:
$user = User::factory()->make();
این کد یک رکورد تست برای شما ایجاد می کند اما در دیتابیس ذخیره نمی کند.
مثال کامل:
فرض کنید یک جدول برای مقالات (Posts) دارید.
class PostFactory extends Factory
{
protected $model = \App\Models\Post::class;
public function definition()
{
return [
'title' => $this->faker->sentence(),
'content' => $this->faker->paragraph(),
'user_id' => \App\Models\User::factory(),
];
}
}
این کد یک جمله رندوم برای title، یک پاراگراف رندوم برای content، و یک کاربر جدید برای user_id ایجاد می کند.
فرض کنید می خواهیم 100 پست تستی ایجاد کنیم:
Post::factory()->count(100)->create();
این فکتوری به سادگی 100 پست تستی برای شما ایجاد خواهد کرد.
فکتوریها ابزاری قدرتمند برای تولید دادههای تستی و توسعه هستند.
به کمک آنها میتوانید بهسرعت دادههای مرتبط ایجاد کرده و تستهای خود را سادهتر و سریعتر انجام دهید.
فکتوریها انعطافپذیر هستند و میتوانید شرایط مختلف (مانند ایجاد رکوردهای مرتبط) را پیادهسازی کنید.
در پست های بعدی به طور کامل به فکتوری ها خواهیم پرداخت.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
❤7👍2
فصل پنج - Migrations and Database
بخش دوم - Factories
لاراول هنگام کار با فکتوریها، مجموعهای از متدها و پراپرتیها را ارائه میدهد که به شما کمک میکنند دادههای نمونه پیشرفتهتری بسازید.
این متد ها درون کلاس فکتوری پیاده سازی می شوند.
1- متد definition
این متد اصلی ترین متد برای تعریف دادههای پیشفرض فکتوری استفاده میشود. دادههای تولید شده توسط Faker در این متد تعریف میشوند.
این متد یک آرایه برمی گرداند که شامل نام فیلد ها به عنوان key و مقدار فیلد ها به عنوان value می باشد.
2- متد unverified
این متد میتواند حالتی خاص برای فکتوری شما تعریف کند. مثلاً دادههایی را تولید کند که ایمیل کاربر تایید نشده باشد.
وقتی شما از متد unverified استفاده میکنید، در واقع یک وضعیت خاص برای فیلدها تعریف میکنید که باعث میشود برخی از فیلدها مانند email_verified_at برای رکوردهای ساخته شده، مقدار null داشته باشند.
این متد یک state جدید ایجاد می کند، یعنی می توانید برخی از مقادیر فیلدها را در unverified تغییر دهید بدون این که کل تعریف پیشفرض در متد definition را تغییر دهید.
3- متد suspended
یک حالت خاص دیگر (مانند unverified) برای دادهها تعریف میکند. این متد معمولاً برای افزودن وضعیت خاص به رکوردها استفاده میشود.
4- متد configure
متدی که به شما اجازه میدهد عملیات سفارشیسازی یا رویدادهایی را قبل یا بعد از ایجاد رکوردها اجرا کنید. معمولاً برای تنظیم مقادیر اضافی یا اعمال تغییرات خاص استفاده میشود.
این متد پس از اجرای متد craete به طور خودکار ایجاد می شود.
همچنین می توانید به جای afterCreating از afterMaking استفاده کنید درصورت استفاده از متد make.
5- متد newFactory
برای اتصال یک مدل به فکتوری استفاده میشود. این متد معمولاً در مدلها تعریف میشود و هدف اصلی آن مشخص کردن فکتوری مرتبط با مدل است تا بتوان به سادگی و بدون نیاز به تنظیم دستی، رکوردهای مدل را با استفاده از فکتوری تولید کرد.
درصورتی که نام مدل و فکتوری شما استاندارد باشد (مثلا User و UserFactory به ترتیب برای مدل و فکتوری)، لاراول به طور خودکار این عملیات را انجام می دهد.
در قسمت بعدی با تمامی متد های مرتبط با فکتوری که از مدل ها قابل فراخوانی هستند آشنا می شویم.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش دوم - Factories
لاراول هنگام کار با فکتوریها، مجموعهای از متدها و پراپرتیها را ارائه میدهد که به شما کمک میکنند دادههای نمونه پیشرفتهتری بسازید.
این متد ها درون کلاس فکتوری پیاده سازی می شوند.
1- متد definition
این متد اصلی ترین متد برای تعریف دادههای پیشفرض فکتوری استفاده میشود. دادههای تولید شده توسط Faker در این متد تعریف میشوند.
این متد یک آرایه برمی گرداند که شامل نام فیلد ها به عنوان key و مقدار فیلد ها به عنوان value می باشد.
class UserFactory extends Factory
{
protected $model = \App\Models\User::class;
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'password' => bcrypt('password'),
];
}
}
2- متد unverified
این متد میتواند حالتی خاص برای فکتوری شما تعریف کند. مثلاً دادههایی را تولید کند که ایمیل کاربر تایید نشده باشد.
وقتی شما از متد unverified استفاده میکنید، در واقع یک وضعیت خاص برای فیلدها تعریف میکنید که باعث میشود برخی از فیلدها مانند email_verified_at برای رکوردهای ساخته شده، مقدار null داشته باشند.
public function unverified()
{
return $this->state(function (array $attributes) {
return [
'email_verified_at' => null,
];
});
}
// Usage:
User::factory()->unverified()->create();
این متد یک state جدید ایجاد می کند، یعنی می توانید برخی از مقادیر فیلدها را در unverified تغییر دهید بدون این که کل تعریف پیشفرض در متد definition را تغییر دهید.
3- متد suspended
یک حالت خاص دیگر (مانند unverified) برای دادهها تعریف میکند. این متد معمولاً برای افزودن وضعیت خاص به رکوردها استفاده میشود.
public function suspended()
{
return $this->state(function (array $attributes) {
return [
'is_suspended' => true,
];
});
}
// Usage:
User::factory()->suspended()->create();
4- متد configure
متدی که به شما اجازه میدهد عملیات سفارشیسازی یا رویدادهایی را قبل یا بعد از ایجاد رکوردها اجرا کنید. معمولاً برای تنظیم مقادیر اضافی یا اعمال تغییرات خاص استفاده میشود.
public function configure()
{
return $this->afterCreating(function (User $user) {
$user->profile()->create([
'bio' => 'This is a sample bio.',
]);
});
}
// Usage:
User::factory()->create();
این متد پس از اجرای متد craete به طور خودکار ایجاد می شود.
همچنین می توانید به جای afterCreating از afterMaking استفاده کنید درصورت استفاده از متد make.
5- متد newFactory
برای اتصال یک مدل به فکتوری استفاده میشود. این متد معمولاً در مدلها تعریف میشود و هدف اصلی آن مشخص کردن فکتوری مرتبط با مدل است تا بتوان به سادگی و بدون نیاز به تنظیم دستی، رکوردهای مدل را با استفاده از فکتوری تولید کرد.
class User extends Authenticatable
{
use HasFactory;
protected static function newFactory()
{
return UserFactory::new();
}
}
درصورتی که نام مدل و فکتوری شما استاندارد باشد (مثلا User و UserFactory به ترتیب برای مدل و فکتوری)، لاراول به طور خودکار این عملیات را انجام می دهد.
در قسمت بعدی با تمامی متد های مرتبط با فکتوری که از مدل ها قابل فراخوانی هستند آشنا می شویم.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
👍4❤2
فصل پنج - Migrations and Database
بخش دوم - Factories
در این قسمت به متد های مربوط به فکتوری ها و قابل فراخوانی از مدل ها می پردازیم.
1- متد factory
برای ایجاد یک فکتوری جدید استفاده میشود. در نسخههای قدیمی لاراول این متد به طور خودکار در دسترس بود، اما در نسخههای جدید لاراول باید از Model::factory() استفاده کنید.
در اینجا از متد factory برای تولید یک فکتوری از مدل User استفاده شده است.
2- متد create
برای ذخیره مدلهای تولیدشده در پایگاه داده استفاده میشود. این متد رکورد جدید را در دیتابیس ذخیره میکند.
در این مثال، کاربر جدیدی بر اساس فیلد های تعریف شده در UserFactory ایجاد و ذخیره میشود.
3- متد trashed
برای فیلتر کردن مدلهایی که در حالت soft delete قرار دارند، استفاده میشود. این متد برای زمانی که میخواهید فقط مدلهای حذفشده را ایجاد کنید مفید است.
در این مثال، کاربری که حذف شده است، ایجاد میشود.
4- متد make
مشابه create است اما رکورد را ذخیره نمیکند. این متد فقط شی مدل را برمیگرداند و هیچ تغییراتی در دیتابیس ایجاد نمیکند.
در اینجا، یک مدل جدید ساخته میشود اما در پایگاه داده ذخیره نمیشود.
5- متد count
برای مشخص کردن تعداد رکوردهایی است که باید ایجاد شوند.
در اینجا 10 کاربر ایجاد و در پایگاه داده ذخیره میشود.
6- متد suspended
معمولاً به عنوان یک حالت (state) در فکتوریها استفاده میشود. این متد یک وضعیت خاص (مثل تعلیق یا وضعیت غیر فعال) را به مدل اختصاص میدهد.
در اینجا، یک کاربر که در وضعیت تعلیق قرار دارد، ایجاد میشود.
7- متد state
برای اعمال حالتهای خاص (custom states) به مدلهای تولید شده استفاده میشود. این متد به شما این امکان را میدهد که ویژگیهای مدل را به صورت پویا تغییر دهید.
در اینجا، یک کاربر تولید میشود که ایمیل او تایید نشده است.
8- متد has
برای ایجاد روابط (مثل روابط hasMany) استفاده میشود. این متد به شما این امکان را میدهد که تعداد مدلهای وابسته (مانند پستها، کامنتها و غیره) را که باید به مدل اصلی تعلق داشته باشند مشخص کنید.
ابتدا یک کاربر جدید ایجاد میشود، سپس 5 پست مرتبط با این کاربر به طور خودکار ایجاد میشود.
ای متد نیاز به پیاده سازی روابط مربوطه در مدل های مربوطه می باشد.
9- متد hasXXX
این متد همان متد has می باشد اما به صورت داینامیک.
در اینجا، کاربری ایجاد میشود و به طور خودکار 3 پست برای او ایجاد میشود.
بخش Posts در متد hasPosts درواقع نام رابطه posts در مدل User می باشد.
10- متد for
برای تعریف یک رابطه به صورت خاص (معمولاً belongsTo) استفاده میشود. این متد به شما این امکان را میدهد که مدلهای وابسته را به مدل اصلی اختصاص دهید.
در اینجا، یک پست ایجاد میشود که به طور خودکار به یک کاربر جدید تعلق دارد.
11- متد forXXX
این متد همان متد for می باشد اما به صورت داینامیک.
در اینجا، یک پست برای یک کاربر مشخص ایجاد میشود.
بخش User در متد forUser درواقع رابطه user در مدل Post می باشد.
12- متد hasAttached
برای ایجاد روابط وابسته بین مدلها (مانند belongsToMany) استفاده میشود. این متد برای مدیریت روابط چند به چند (many-to-many) کاربرد دارد.
در اینجا، یک کاربر جدید ایجاد میشود و به طور خودکار به 3 نقش متصل میشود.
13- متد recycle
برای استفاده از یک مدل موجود (که قبلاً ایجاد شده یا حذف نرم شده) در روابط مختلف میان مدلها استفاده میشود. این متد به شما کمک میکند که یک مدل خاص را در فکتوریهای مختلف برای ایجاد رکوردهای مرتبط استفاده کنید تا یک نسخه واحد از آن مدل برای همه روابط در فرآیند ساخت دادهها استفاده شود.
در اینجا، ابتدا یک ایرلاین جدید ایجاد میشود، سپس متد recycle این ایرلاین را برای استفاده در بلیطها و پروازهایی که ایجاد میشوند، انتخاب میکند. درواقع ایرلاین ایجاد شده در تمام بلیطها و پروازهای موجود از قبل استفاده میشود.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش دوم - Factories
در این قسمت به متد های مربوط به فکتوری ها و قابل فراخوانی از مدل ها می پردازیم.
1- متد factory
برای ایجاد یک فکتوری جدید استفاده میشود. در نسخههای قدیمی لاراول این متد به طور خودکار در دسترس بود، اما در نسخههای جدید لاراول باید از Model::factory() استفاده کنید.
User::factory()->...
در اینجا از متد factory برای تولید یک فکتوری از مدل User استفاده شده است.
2- متد create
برای ذخیره مدلهای تولیدشده در پایگاه داده استفاده میشود. این متد رکورد جدید را در دیتابیس ذخیره میکند.
User::factory()->create();
در این مثال، کاربر جدیدی بر اساس فیلد های تعریف شده در UserFactory ایجاد و ذخیره میشود.
3- متد trashed
برای فیلتر کردن مدلهایی که در حالت soft delete قرار دارند، استفاده میشود. این متد برای زمانی که میخواهید فقط مدلهای حذفشده را ایجاد کنید مفید است.
User::factory()->trashed()->create();
در این مثال، کاربری که حذف شده است، ایجاد میشود.
4- متد make
مشابه create است اما رکورد را ذخیره نمیکند. این متد فقط شی مدل را برمیگرداند و هیچ تغییراتی در دیتابیس ایجاد نمیکند.
$user = User::factory()->make();
در اینجا، یک مدل جدید ساخته میشود اما در پایگاه داده ذخیره نمیشود.
5- متد count
برای مشخص کردن تعداد رکوردهایی است که باید ایجاد شوند.
User::factory()->count(10)->create();
در اینجا 10 کاربر ایجاد و در پایگاه داده ذخیره میشود.
6- متد suspended
معمولاً به عنوان یک حالت (state) در فکتوریها استفاده میشود. این متد یک وضعیت خاص (مثل تعلیق یا وضعیت غیر فعال) را به مدل اختصاص میدهد.
User::factory()->suspended()->create();
در اینجا، یک کاربر که در وضعیت تعلیق قرار دارد، ایجاد میشود.
7- متد state
برای اعمال حالتهای خاص (custom states) به مدلهای تولید شده استفاده میشود. این متد به شما این امکان را میدهد که ویژگیهای مدل را به صورت پویا تغییر دهید.
User::factory()->state([
'email_verified_at' => null,
])->create();
در اینجا، یک کاربر تولید میشود که ایمیل او تایید نشده است.
8- متد has
برای ایجاد روابط (مثل روابط hasMany) استفاده میشود. این متد به شما این امکان را میدهد که تعداد مدلهای وابسته (مانند پستها، کامنتها و غیره) را که باید به مدل اصلی تعلق داشته باشند مشخص کنید.
User::factory()->has(Post::factory()->count(5))->create();
ابتدا یک کاربر جدید ایجاد میشود، سپس 5 پست مرتبط با این کاربر به طور خودکار ایجاد میشود.
ای متد نیاز به پیاده سازی روابط مربوطه در مدل های مربوطه می باشد.
9- متد hasXXX
این متد همان متد has می باشد اما به صورت داینامیک.
User::factory()->hasPosts(3)->create();
در اینجا، کاربری ایجاد میشود و به طور خودکار 3 پست برای او ایجاد میشود.
بخش Posts در متد hasPosts درواقع نام رابطه posts در مدل User می باشد.
10- متد for
برای تعریف یک رابطه به صورت خاص (معمولاً belongsTo) استفاده میشود. این متد به شما این امکان را میدهد که مدلهای وابسته را به مدل اصلی اختصاص دهید.
Post::factory()->for(User::factory())->create();
در اینجا، یک پست ایجاد میشود که به طور خودکار به یک کاربر جدید تعلق دارد.
11- متد forXXX
این متد همان متد for می باشد اما به صورت داینامیک.
Post::factory()->forUser($user)->create();
در اینجا، یک پست برای یک کاربر مشخص ایجاد میشود.
بخش User در متد forUser درواقع رابطه user در مدل Post می باشد.
12- متد hasAttached
برای ایجاد روابط وابسته بین مدلها (مانند belongsToMany) استفاده میشود. این متد برای مدیریت روابط چند به چند (many-to-many) کاربرد دارد.
User::factory()->hasAttached(Role::factory(), 3)->create();
در اینجا، یک کاربر جدید ایجاد میشود و به طور خودکار به 3 نقش متصل میشود.
13- متد recycle
برای استفاده از یک مدل موجود (که قبلاً ایجاد شده یا حذف نرم شده) در روابط مختلف میان مدلها استفاده میشود. این متد به شما کمک میکند که یک مدل خاص را در فکتوریهای مختلف برای ایجاد رکوردهای مرتبط استفاده کنید تا یک نسخه واحد از آن مدل برای همه روابط در فرآیند ساخت دادهها استفاده شود.
Ticket::factory()->recycle(Airline::factory()->create())->create();
در اینجا، ابتدا یک ایرلاین جدید ایجاد میشود، سپس متد recycle این ایرلاین را برای استفاده در بلیطها و پروازهایی که ایجاد میشوند، انتخاب میکند. درواقع ایرلاین ایجاد شده در تمام بلیطها و پروازهای موجود از قبل استفاده میشود.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
❤4👍2
⚜️ دوره لاراول - قسمت نوزدهم
📚 مینی پروژه TODo App - ساخت داکیومنت + حل مشکلات جزئی - پایان مینی پروژه ✅
خلاصه :
توی این ویدیو به ادامه مینی پروژه پرداختیم و برای api ای که در قسمت های قبل توسعه دادیم داکیومنت ساختیم و یه سری مشکلات ریز وجود داشت که حل کردیم... با این ویدیو عملا پرونده بخش مینی پروژه بسته میشه و از این به بعد میرسیم سراغ ادامه آموزش ها.
✳️ کد های این مینی پروژه روی گیت هاب قرار گرفته.
توی قسمت های بعدی این مجموعه رو ادامه میدیم.
🎞 لینک ویدیو:
https://youtu.be/BcWH85FtUN0
🔗 Github Repo
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
📚 مینی پروژه TODo App - ساخت داکیومنت + حل مشکلات جزئی - پایان مینی پروژه ✅
خلاصه :
توی این ویدیو به ادامه مینی پروژه پرداختیم و برای api ای که در قسمت های قبل توسعه دادیم داکیومنت ساختیم و یه سری مشکلات ریز وجود داشت که حل کردیم... با این ویدیو عملا پرونده بخش مینی پروژه بسته میشه و از این به بعد میرسیم سراغ ادامه آموزش ها.
✳️ کد های این مینی پروژه روی گیت هاب قرار گرفته.
توی قسمت های بعدی این مجموعه رو ادامه میدیم.
🎞 لینک ویدیو:
https://youtu.be/BcWH85FtUN0
🔗 Github Repo
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
👍8❤4
فصل پنج - Migrations and Database
بخش سوم - Seeders
Seeder یکی از ابزارهای لاراول است که برای وارد کردن دادههای اولیه یا نمونه به پایگاه داده استفاده میشود. این ابزار به توسعهدهندگان کمک میکند تا دادههای لازم برای تست یا مقداردهی اولیه پایگاه داده را به صورت خودکار و سریع ایجاد کنند.
فرض کنید میخواهید جدول cities را با دادههای اولیه شهرها پر کنید. این جدول ممکن است شامل نام شهرها و استانهای آنها باشد.
1- ایجاد Seeder
ابتدا Seeder جدیدی برای جدول شهرها ایجاد میکنیم، این کار به وسیله دستور زیر انجام می شود:
2- پر کردن Seeder
فایل database/seeders/CitySeeder.php را باز کرده و دادههای اولیه را به صورت دستی وارد کنید:
3- اجرای Seeder
برای اجرای Seeder شهرها، از دستور زیر استفاده کنید:
یا برای اجرای تمامی سیدر ها:
گاهی در محیط پروداکشن سیدر ها ممکن است برای محافط از آسیب داده ها اجرا نشوند، برای این کار می توان از فلگ
پس از اجرای Seeder، جدول cities با داده های مشخص شده پر خواهد شد.
این روش برای مقداردهی اولیه دادههای ثابت مانند شهرها، دستهبندیها، یا تنظیمات بسیار مفید است و در زمان تست یا توسعه پروژه استفاده میشود.
استفاده از فکتوری ها در سیدر:
همچنین می توانید یک فکتوری را در سیدر خود فراخوانی کنید و داده های تستی خود را از فکتوری ایجاد کنید:
فراخوانی سیدر های اضافی در یک سیدر:
همچنین می توانید از متد call استفاده کنید و سیدر های دیگری را در سیدر خود فراخوانی و اجرا کنید:
بی صدا کردن رویداد های مدل:
درصورت اجرای سیدر و ایجاد رکورد ها، رویداد های مدل ها نیز فراخوانی می شوند، شما می توانید با استفاده از تریت WithoutModelEvents، مانع فراخوانی این سیدر ها شوید:
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش سوم - Seeders
Seeder یکی از ابزارهای لاراول است که برای وارد کردن دادههای اولیه یا نمونه به پایگاه داده استفاده میشود. این ابزار به توسعهدهندگان کمک میکند تا دادههای لازم برای تست یا مقداردهی اولیه پایگاه داده را به صورت خودکار و سریع ایجاد کنند.
فرض کنید میخواهید جدول cities را با دادههای اولیه شهرها پر کنید. این جدول ممکن است شامل نام شهرها و استانهای آنها باشد.
1- ایجاد Seeder
ابتدا Seeder جدیدی برای جدول شهرها ایجاد میکنیم، این کار به وسیله دستور زیر انجام می شود:
php artisan make:seeder CitySeeder
2- پر کردن Seeder
فایل database/seeders/CitySeeder.php را باز کرده و دادههای اولیه را به صورت دستی وارد کنید:
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\City;
class CitySeeder extends Seeder
{
public function run()
{
$cities = [
['name' => 'Tehran', 'province' => 'Tehran'],
['name' => 'Mashhad', 'province' => 'Khorasan Razavi'],
['name' => 'Isfahan', 'province' => 'Isfahan'],
['name' => 'Shiraz', 'province' => 'Fars'],
['name' => 'Tabriz', 'province' => 'East Azerbaijan'],
];
foreach ($cities as $city) {
City::create($city);
}
// Or using query builder:
//City::insert($cities);
}
}
3- اجرای Seeder
برای اجرای Seeder شهرها، از دستور زیر استفاده کنید:
php artisan db:seed --class=CitySeeder
یا برای اجرای تمامی سیدر ها:
php artisan db:seed
گاهی در محیط پروداکشن سیدر ها ممکن است برای محافط از آسیب داده ها اجرا نشوند، برای این کار می توان از فلگ
—force استفاده کرد، اما مراقب داده های خود باشید:php artisan db:seed --force
پس از اجرای Seeder، جدول cities با داده های مشخص شده پر خواهد شد.
این روش برای مقداردهی اولیه دادههای ثابت مانند شهرها، دستهبندیها، یا تنظیمات بسیار مفید است و در زمان تست یا توسعه پروژه استفاده میشود.
استفاده از فکتوری ها در سیدر:
همچنین می توانید یک فکتوری را در سیدر خود فراخوانی کنید و داده های تستی خود را از فکتوری ایجاد کنید:
# UserSeeder.php
public function run(): void
{
User::factory()
->count(50)
->hasPosts(1)
->create();
}
فراخوانی سیدر های اضافی در یک سیدر:
همچنین می توانید از متد call استفاده کنید و سیدر های دیگری را در سیدر خود فراخوانی و اجرا کنید:
# FolanSeeder.php
public function run(): void
{
$this->call([
UserSeeder::class,
PostSeeder::class,
CommentSeeder::class,
]);
}
بی صدا کردن رویداد های مدل:
درصورت اجرای سیدر و ایجاد رکورد ها، رویداد های مدل ها نیز فراخوانی می شوند، شما می توانید با استفاده از تریت WithoutModelEvents، مانع فراخوانی این سیدر ها شوید:
class DatabaseSeeder extends Seeder
{
use WithoutModelEvents;
public function run(): void
{
$this->call([
UserSeeder::class,
]);
}
}
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
❤5👍2
⚜️ دوره لاراول - قسمت نوزدهم
📚 الکوئنت ، فکتوریها | Eloquent Factories
خلاصه :
توی این قسمت با فکتوریها اشنا شدیم کمی باهاشون کار کردیم ، برای پستها فکتوری ساختیم و استفاده کردیم.
توی قسمت های بعدی این مجموعه رو ادامه میدیم.
🎞 لینک ویدیو:
https://youtu.be/Gh-fbsUupLE
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
📚 الکوئنت ، فکتوریها | Eloquent Factories
خلاصه :
توی این قسمت با فکتوریها اشنا شدیم کمی باهاشون کار کردیم ، برای پستها فکتوری ساختیم و استفاده کردیم.
توی قسمت های بعدی این مجموعه رو ادامه میدیم.
🎞 لینک ویدیو:
https://youtu.be/Gh-fbsUupLE
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
❤6
فصل پنج - Migrations and Database
بخش چهارم - اتصالات دیتابیس
در لاراول، مدیریت چندین اتصال به دیتابیس و استفاده از دیتابیسهای مختلف به صورت سادهای امکانپذیر است.
- چندین اتصال به دیتابیس
برای مدیریت چندین اتصال به دیتابیس فایل تنظیمات
مثال:
در اینجا دو کانکشن مختلف با نام های mysql و mysql_second را پیکربندی می کنیم.
——————
- استفاده از چندین کانکشن در کد
پس از تعریف کانکشنها در فایل تنظیمات، میتوانید به صورت زیر از آنها استفاده کنید:
همچنین در یک مدل خاص میتوانید کانکشن را مشخص کنید:
——————
- استفاده از MongoDB
برای استفاده از MongoDB در لاراول، میتوانید از پکیج رسمی
با استفاده از Composer، پکیج را به پروژه خود اضافه کنید:
پس از نصب پکیج، باید تنظیمات مربوط به اتصال به دیتابیس MongoDB را در فایل
پس از آن با کانکشن mongodb به دیتابیس mongodb خود متصل شوید.
——————
- استفاده از Redis در لاراول
لاراول به صورت داخلی از Redis پشتیبانی میکند.
تنظیمات Redis را می توانید در فایل
در این دوره استفاده از ردیس به طور کامل بررسی نمی شود، اما تمامی متد های ردیس از فساد Redis در دسترس هستند:
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش چهارم - اتصالات دیتابیس
در لاراول، مدیریت چندین اتصال به دیتابیس و استفاده از دیتابیسهای مختلف به صورت سادهای امکانپذیر است.
- چندین اتصال به دیتابیس
برای مدیریت چندین اتصال به دیتابیس فایل تنظیمات
config/database.php را باز کنید. در آرایهی connections، میتوانید چندین کانکشن مختلف تعریف کنید.مثال:
'connections' => [
'mysql' => [
// ...
],
'mysql_second' => [
// ...
],
]
در اینجا دو کانکشن مختلف با نام های mysql و mysql_second را پیکربندی می کنیم.
——————
- استفاده از چندین کانکشن در کد
پس از تعریف کانکشنها در فایل تنظیمات، میتوانید به صورت زیر از آنها استفاده کنید:
// connect to 'mysql'
$data = DB::connection('mysql')->select('SELECT * FROM users');
// connect to 'mysql_second'
$data = DB::connection('mysql_second')->select('SELECT * FROM products');
// In migrations
public function up()
{
Schema::connection('mysql_second')->create('products', function (Blueprint $table) {
// ...
});
}
همچنین در یک مدل خاص میتوانید کانکشن را مشخص کنید:
class Product extends Model
{
protected $connection = 'mysql_second';
}
——————
- استفاده از MongoDB
برای استفاده از MongoDB در لاراول، میتوانید از پکیج رسمی
mongodb/laravel-mongodb استفاده کنید. این پکیج توسط MongoDB نگهداری میشود و ادغام کاملی با Eloquent و سایر ویژگیهای لاراول فراهم میکند. در ادامه، مراحل نصب و پیکربندی این پکیج را توضیح میدهم:با استفاده از Composer، پکیج را به پروژه خود اضافه کنید:
composer require mongodb/laravel-mongodb
پس از نصب پکیج، باید تنظیمات مربوط به اتصال به دیتابیس MongoDB را در فایل
config/database.php اضافه کنید. در بخش connections، کانکشن mongodb را به صورت زیر تعریف کنید:'connections' => [
// others...
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel_app'),
],
],
پس از آن با کانکشن mongodb به دیتابیس mongodb خود متصل شوید.
——————
- استفاده از Redis در لاراول
لاراول به صورت داخلی از Redis پشتیبانی میکند.
تنظیمات Redis را می توانید در فایل
config/database.php بررسی کنید.در این دوره استفاده از ردیس به طور کامل بررسی نمی شود، اما تمامی متد های ردیس از فساد Redis در دسترس هستند:
use Illuminate\Support\Facades\Redis;
Redis::set('key', 'value');
$value = Redis::get('key');
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
👍6❤4
فصل شش - Requests and Response
بخش اول - پردازش درخواست و پاسخ
در فریمورک لاراول، مفاهیم Request (درخواست) و Response (پاسخ) جزو مهمترین اجزای پردازش درخواستهای وب محسوب میشوند. این دو مفهوم در الگوی MVC بخش ارتباط بین کاربر (Client) و سرور (Backend) را مدیریت میکنند.
1- درخواست (Request)
Request در لاراول به تمام دادههایی گفته میشود که از طرف کاربر (مثلاً مرورگر، Postman یا یک کلاینت دیگر) به سرور ارسال میشود. این دادهها میتوانند شامل موارد زیر باشند:
- دادههای فرم (POST)
- پارامترهای URL (GET)
- هدرهای HTTP
- کوکیها
- فایلهای آپلود شده
- اطلاعات احراز هویت
لاراول برای مدیریت درخواستها از کلاس Illuminate\Http\Request استفاده میکند که قابلیتهای زیادی برای دسترسی و فیلتر کردن دادههای ورودی دارد.
در کنترلرها، برای دریافت اطلاعات ورودی، میتوان از کلاس Request استفاده کرد:
2- پاسخ (Response)
Response یا پاسخ، همان دادهای است که لاراول پس از پردازش درخواست به کلاینت ارسال میکند. این پاسخ میتواند شامل:
- HTML یا View
- JSON یا API Response
- ریدارکت (Redirect)
- دانلود فایل
- ارسال پیامهای خطا یا موفقیت باشد.
در کنترلرها، برای ارسال پاسخ، میتوان از فساد یا هلپر Response استفاده کرد:
در ادامه این بخش به بررسی Request و Response و تمامی متد های در دسترس از آنها خواهیم پرداخت.
🔖 #Laravel, #PHP, #فصل_۶, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش اول - پردازش درخواست و پاسخ
در فریمورک لاراول، مفاهیم Request (درخواست) و Response (پاسخ) جزو مهمترین اجزای پردازش درخواستهای وب محسوب میشوند. این دو مفهوم در الگوی MVC بخش ارتباط بین کاربر (Client) و سرور (Backend) را مدیریت میکنند.
1- درخواست (Request)
Request در لاراول به تمام دادههایی گفته میشود که از طرف کاربر (مثلاً مرورگر، Postman یا یک کلاینت دیگر) به سرور ارسال میشود. این دادهها میتوانند شامل موارد زیر باشند:
- دادههای فرم (POST)
- پارامترهای URL (GET)
- هدرهای HTTP
- کوکیها
- فایلهای آپلود شده
- اطلاعات احراز هویت
لاراول برای مدیریت درخواستها از کلاس Illuminate\Http\Request استفاده میکند که قابلیتهای زیادی برای دسترسی و فیلتر کردن دادههای ورودی دارد.
در کنترلرها، برای دریافت اطلاعات ورودی، میتوان از کلاس Request استفاده کرد:
class UserController extends Controller
{
public function store(Request $request)
{
$name = $request->input('name');
$email = $request->input('email', 'default@example.com');
$data = $request->all();
$token = $request->header('Authorization');
}
}
2- پاسخ (Response)
Response یا پاسخ، همان دادهای است که لاراول پس از پردازش درخواست به کلاینت ارسال میکند. این پاسخ میتواند شامل:
- HTML یا View
- JSON یا API Response
- ریدارکت (Redirect)
- دانلود فایل
- ارسال پیامهای خطا یا موفقیت باشد.
در کنترلرها، برای ارسال پاسخ، میتوان از فساد یا هلپر Response استفاده کرد:
class UserController extends Controller
{
public function store(Request $request)
{
return response('Hello, Laravel!');
return response()->json([
'message' => 'Success',
'status' => 200
]);
return response()->view('welcome', ['name' => 'John']);
}
}
در ادامه این بخش به بررسی Request و Response و تمامی متد های در دسترس از آنها خواهیم پرداخت.
🔖 #Laravel, #PHP, #فصل_۶, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
❤4👍4