فصل پنج - Migrations and Database
بخش اول - تعریف و اجرای Migrationها
1- متد macAddress
ایجاد ستونی برای ذخیره آدرس MAC.
2- متد mediumIncrements
ایجاد کلید اصلی AUTO_INCREMENT از نوع MEDIUMINT.
3- متد mediumInteger
ایجاد ستون عدد صحیح از نوع MEDIUMINT.
4- متد mediumText
ایجاد ستون متنی از نوع MEDIUMTEXT.
5- متد morphs
این متد دو ستون morphable_id (عدد صحیح) و morphable_type (متن) برای پیادهسازی روابط چندشکلی (polymorphic) ایجاد میکند.
در این مثال، ستونهای commentable_id و commentable_type برای رابطه چندشکلی ایجاد میشوند.
6- متد nullableMorphs
مشابه morphs، اما ستونها به صورت nullable تعریف میشوند.
7- متد nullableTimestamps
ایجاد دو ستون created_at و updated_at که میتوانند nullable باشند.
8- متد nullableUlidMorphs
مشابه nullableMorphs، اما ستونهای کلید خارجی از نوع ULID هستند و nullable تعریف میشوند.
9- متد nullableUuidMorphs
مشابه nullableMorphs، اما ستونها از نوع UUID هستند و nullable تعریف میشوند.
10- متد rememberToken
ایجاد ستونی به نام remember_token برای مدیریت توکنهای احراز هویت.
11- متد set
ایجاد ستونی از نوع SET که میتواند شامل یک یا چند مقدار از یک مجموعه مشخص باشد.
12- متد smallIncrements
ایجاد کلید اصلی AUTO_INCREMENT از نوع SMALLINT.
13- متد smallInteger
ایجاد ستون عدد صحیح از نوع SMALLINT.
14- متد softDeletesTz
ایجاد ستونی برای Soft Delete با پشتیبانی از منطقه زمانی.
15- متد softDeletes
ایجاد ستونی برای Soft Delete بدون منطقه زمانی.
16- متد string
ایجاد ستونی متنی (رشتهای).
17- متد text
ایجاد ستونی متنی طولانی.
18- متد timeTz
ایجاد ستونی برای ذخیره زمان همراه با منطقه زمانی.
19- متد time
ایجاد ستونی برای ذخیره زمان بدون منطقه زمانی.
20- متد timestampTz
ایجاد ستونی برای ذخیره تایماستمپ همراه با منطقه زمانی.
21- متد timestamp
ایجاد ستونی برای ذخیره تایماستمپ بدون منطقه زمانی.
22- متد timestampsTz
ایجاد دو ستون created_at و updated_at همراه با منطقه زمانی.
23- متد timestamps
ایجاد دو ستون created_at و updated_at بدون منطقه زمانی.
24- متد tinyIncrements
ایجاد کلید اصلی AUTO_INCREMENT از نوع TINYINT.
25- متد tinyInteger
ایجاد ستون عدد صحیح کوچک از نوع TINYINT.
26- متد tinyText
ایجاد ستون متنی کوچک (حداکثر 255 کاراکتر).
27- متد unsignedBigInteger
ایجاد ستون BIGINT بدون علامت.
28- متد unsignedInteger
ایجاد ستون INT بدون علامت.
29- متد unsignedMediumInteger
ایجاد ستون MEDIUMINT بدون علامت.
30- متد unsignedSmallInteger
ایجاد ستون SMALLINT بدون علامت.
31- متد unsignedTinyInteger
ایجاد ستون TINYINT بدون علامت.
32- متد ulidMorphs
ایجاد ستونهای رابطه چندشکلی (morphable_id و morphable_type) از نوع ULID.
33- متد uuidMorphs
ایجاد ستونهای رابطه چندشکلی (morphable_id و morphable_type) از نوع UUID.
34- متد ulid
ایجاد ستونی از نوع ULID برای ذخیره شناسههای یکتا.
35- متد uuid
ایجاد ستونی از نوع UUID برای ذخیره شناسههای یکتا.
36- متد vector
ایجاد ستونی برای ذخیره دادههای برداری (Vector Data). این متد معمولاً برای ذخیره دادههای پیچیده مانند مدلهای یادگیری ماشینی استفاده میشود.
37- متد year
ایجاد ستونی برای ذخیره سال (از نوع YEAR).
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش اول - تعریف و اجرای Migrationها
1- متد macAddress
ایجاد ستونی برای ذخیره آدرس MAC.
$table->macAddress('device_mac');
2- متد mediumIncrements
ایجاد کلید اصلی AUTO_INCREMENT از نوع MEDIUMINT.
$table->mediumIncrements('id');
3- متد mediumInteger
ایجاد ستون عدد صحیح از نوع MEDIUMINT.
4- متد mediumText
ایجاد ستون متنی از نوع MEDIUMTEXT.
$table->mediumText('summary');
5- متد morphs
این متد دو ستون morphable_id (عدد صحیح) و morphable_type (متن) برای پیادهسازی روابط چندشکلی (polymorphic) ایجاد میکند.
$table->morphs('commentable');
در این مثال، ستونهای commentable_id و commentable_type برای رابطه چندشکلی ایجاد میشوند.
6- متد nullableMorphs
مشابه morphs، اما ستونها به صورت nullable تعریف میشوند.
$table->nullableMorphs('taggable');
7- متد nullableTimestamps
ایجاد دو ستون created_at و updated_at که میتوانند nullable باشند.
$table->nullableTimestamps(precision: 0);
8- متد nullableUlidMorphs
مشابه nullableMorphs، اما ستونهای کلید خارجی از نوع ULID هستند و nullable تعریف میشوند.
$table->nullableUlidMorphs('taggable');
9- متد nullableUuidMorphs
مشابه nullableMorphs، اما ستونها از نوع UUID هستند و nullable تعریف میشوند.
10- متد rememberToken
ایجاد ستونی به نام remember_token برای مدیریت توکنهای احراز هویت.
$table->rememberToken();
11- متد set
ایجاد ستونی از نوع SET که میتواند شامل یک یا چند مقدار از یک مجموعه مشخص باشد.
$table->set('flavors', ['strawberry', 'vanilla']);
12- متد smallIncrements
ایجاد کلید اصلی AUTO_INCREMENT از نوع SMALLINT.
$table->smallIncrements('id');
13- متد smallInteger
ایجاد ستون عدد صحیح از نوع SMALLINT.
14- متد softDeletesTz
ایجاد ستونی برای Soft Delete با پشتیبانی از منطقه زمانی.
$table->softDeletesTz('deleted_at', precision: 0);
15- متد softDeletes
ایجاد ستونی برای Soft Delete بدون منطقه زمانی.
16- متد string
ایجاد ستونی متنی (رشتهای).
$table->string('name', length: 100);
17- متد text
ایجاد ستونی متنی طولانی.
$table->text('description');
18- متد timeTz
ایجاد ستونی برای ذخیره زمان همراه با منطقه زمانی.
$table->timeTz('sunrise', precision: 0);
19- متد time
ایجاد ستونی برای ذخیره زمان بدون منطقه زمانی.
20- متد timestampTz
ایجاد ستونی برای ذخیره تایماستمپ همراه با منطقه زمانی.
$table->timestampTz('added_at', precision: 0);
21- متد timestamp
ایجاد ستونی برای ذخیره تایماستمپ بدون منطقه زمانی.
22- متد timestampsTz
ایجاد دو ستون created_at و updated_at همراه با منطقه زمانی.
$table->timestampsTz(precision: 0);
23- متد timestamps
ایجاد دو ستون created_at و updated_at بدون منطقه زمانی.
24- متد tinyIncrements
ایجاد کلید اصلی AUTO_INCREMENT از نوع TINYINT.
$table->tinyIncrements('id');
25- متد tinyInteger
ایجاد ستون عدد صحیح کوچک از نوع TINYINT.
26- متد tinyText
ایجاد ستون متنی کوچک (حداکثر 255 کاراکتر).
$table->tinyText('notes');
27- متد unsignedBigInteger
ایجاد ستون BIGINT بدون علامت.
$table->unsignedBigInteger('votes');
28- متد unsignedInteger
ایجاد ستون INT بدون علامت.
29- متد unsignedMediumInteger
ایجاد ستون MEDIUMINT بدون علامت.
30- متد unsignedSmallInteger
ایجاد ستون SMALLINT بدون علامت.
31- متد unsignedTinyInteger
ایجاد ستون TINYINT بدون علامت.
32- متد ulidMorphs
ایجاد ستونهای رابطه چندشکلی (morphable_id و morphable_type) از نوع ULID.
$table->ulidMorphs('taggable');
33- متد uuidMorphs
ایجاد ستونهای رابطه چندشکلی (morphable_id و morphable_type) از نوع UUID.
34- متد ulid
ایجاد ستونی از نوع ULID برای ذخیره شناسههای یکتا.
$table->ulid('id');
35- متد uuid
ایجاد ستونی از نوع UUID برای ذخیره شناسههای یکتا.
36- متد vector
ایجاد ستونی برای ذخیره دادههای برداری (Vector Data). این متد معمولاً برای ذخیره دادههای پیچیده مانند مدلهای یادگیری ماشینی استفاده میشود.
$table->vector('embedding', dimensions: 100);
37- متد year
ایجاد ستونی برای ذخیره سال (از نوع YEAR).
$table->year('birth_year');
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
فصل پنج - Migrations and Database
بخش اول - تعریف و اجرای Migrationها
1- متد after
مشخص میکند که ستون باید بعد از ستون دیگری قرار گیرد.
این متد فقط برای برخی پایگاههای داده (مانند MySQL) پشتیبانی میشود.
2- متد autoIncrement
مشخص میکند که ستون به صورت AUTO_INCREMENT تعریف شود.
3- متد charset
تنظیم charset برای ستون.
4- متد collation
تنظیم collation برای ستون.
5- متد comment
اضافه کردن یک توضیح برای ستون.
6- متد default
مقدار پیشفرض برای ستون را تنظیم میکند.
7- متد first
مشخص میکند که ستون باید در ابتدای جدول قرار گیرد.
این متد فقط برای برخی پایگاههای داده (مانند MySQL) پشتیبانی میشود.
8- متد from
مقدار شروع را برای ستون عددی AUTO_INCREMENT مشخص میکند.
9- متد invisible
مشخص میکند که ستون در نتایج کوئریهای SELECT بهصورت پیشفرض مخفی باشد.
این ویژگی فقط در MySQL 8.0.23 یا بالاتر پشتیبانی میشود.
10- متد nullable
مشخص میکند که ستون میتواند مقدار NULL داشته باشد.
11- متد storedAs
ستون total مقدار price + tax را ذخیره میکند.
12- متد unsigned
مشخص میکند که ستون عددی بدون علامت (unsigned) باشد.
13- متد useCurrent
مقدار پیشفرض ستون را به زمان فعلی تنظیم میکند. معمولاً برای ستونهای timestamp یا datetime استفاده میشود.
14- متد useCurrentOnUpdate
مشخص میکند که ستون در زمان بهروزرسانی رکورد بهصورت خودکار مقدار زمان فعلی را دریافت کند.
15- متد virtualAs
ایجاد یک ستون محاسباتی مجازی (Virtual Generated Column). مقدار این ستون در دیتابیس ذخیره نمیشود.
ستون total مقدار price + tax را محاسبه میکند ولی ذخیره نمیشود.
16- متد generatedAs
تعریف یک ستون تولیدشده (Generated Column) با استفاده از عبارت SQL.
17- متد always
معمولاً همراه با ستونهای تولیدشده (Generated Column) استفاده میشود و مقدار آن همیشه از عبارت SQL تولید میشود.
18- متد change
برای تغییر ویژگیهای ستونهای موجود در یک جدول استفاده میشود.
این متد میتواند پس از 17 متد قبلی فراخوانی شود و ویژگی های ستون فعلی را ویرایش کند.
در این مثال، ستون id به صورت AUTO_INCREMENT ایجاد نشده است، اما با این متد به صورت AUTO_INCREMENT ویرایش می شود.
19- متد dropMorphs
این متد برای حذف ستونی که مربوط به Polymorphic Relations است، استفاده میشود.
20- متد dropRememberToken
این متد برای حذف ستونی که برای ذخیرهی remember token در جداول کاربران استفاده میشود، به کار میرود.
21- متد dropSoftDeletes
این متد برای حذف ستونهایی که مربوط به Soft Deletes هستند استفاده میشود.
22- متد dropSoftDeletesTz
این متد مشابه dropSoftDeletes است، اما برای ستونهایی که از نوع timestamp with timezone استفاده میکنند.
23- متد dropTimestamps
این متد برای حذف ستونهای created_at و updated_at استفاده میشود.
24- متد dropTimestampsTz
این متد مشابه dropTimestamps است، اما برای ستونهای created_at و updated_at که با نوع timestamp with timezone ذخیره شدهاند، استفاده میشود.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش اول - تعریف و اجرای Migrationها
1- متد after
مشخص میکند که ستون باید بعد از ستون دیگری قرار گیرد.
این متد فقط برای برخی پایگاههای داده (مانند MySQL) پشتیبانی میشود.
$table->string('middle_name')->after('first_name');
2- متد autoIncrement
مشخص میکند که ستون به صورت AUTO_INCREMENT تعریف شود.
$table->integer('id')->autoIncrement();
3- متد charset
تنظیم charset برای ستون.
$table->string('name')->charset('utf8mb4');
4- متد collation
تنظیم collation برای ستون.
$table->string('name')->collation('utf8mb4_unicode_ci');
5- متد comment
اضافه کردن یک توضیح برای ستون.
$table->integer('age')->comment('Age of the user in years');
6- متد default
مقدار پیشفرض برای ستون را تنظیم میکند.
$table->string('status')->default('active');
7- متد first
مشخص میکند که ستون باید در ابتدای جدول قرار گیرد.
این متد فقط برای برخی پایگاههای داده (مانند MySQL) پشتیبانی میشود.
$table->string('first_name')->first();
8- متد from
مقدار شروع را برای ستون عددی AUTO_INCREMENT مشخص میکند.
$table->integer('id')->autoIncrement()->from(1000);
9- متد invisible
مشخص میکند که ستون در نتایج کوئریهای SELECT بهصورت پیشفرض مخفی باشد.
این ویژگی فقط در MySQL 8.0.23 یا بالاتر پشتیبانی میشود.
$table->string('secret_code')->invisible();
10- متد nullable
مشخص میکند که ستون میتواند مقدار NULL داشته باشد.
$table->string('middle_name')->nullable();
11- متد storedAs
$table->integer('price');
$table->integer('tax');
$table->integer('total')->storedAs('price + tax');
ستون total مقدار price + tax را ذخیره میکند.
12- متد unsigned
مشخص میکند که ستون عددی بدون علامت (unsigned) باشد.
$table->integer('votes')->unsigned();
13- متد useCurrent
مقدار پیشفرض ستون را به زمان فعلی تنظیم میکند. معمولاً برای ستونهای timestamp یا datetime استفاده میشود.
$table->timestamp('created_at')->useCurrent();
14- متد useCurrentOnUpdate
مشخص میکند که ستون در زمان بهروزرسانی رکورد بهصورت خودکار مقدار زمان فعلی را دریافت کند.
$table->timestamp('updated_at')->useCurrentOnUpdate();
15- متد virtualAs
ایجاد یک ستون محاسباتی مجازی (Virtual Generated Column). مقدار این ستون در دیتابیس ذخیره نمیشود.
$table->integer('price');
$table->integer('tax');
$table->integer('total')->virtualAs('price + tax');
ستون total مقدار price + tax را محاسبه میکند ولی ذخیره نمیشود.
16- متد generatedAs
تعریف یک ستون تولیدشده (Generated Column) با استفاده از عبارت SQL.
$table->integer('price');
$table->integer('tax');
$table->integer('total')->generatedAs('price + tax');
17- متد always
معمولاً همراه با ستونهای تولیدشده (Generated Column) استفاده میشود و مقدار آن همیشه از عبارت SQL تولید میشود.
$table->integer('total')->generatedAs('price + tax')->always();
18- متد change
برای تغییر ویژگیهای ستونهای موجود در یک جدول استفاده میشود.
این متد میتواند پس از 17 متد قبلی فراخوانی شود و ویژگی های ستون فعلی را ویرایش کند.
$table->integer('id')->autoIncrement()->change();
در این مثال، ستون id به صورت AUTO_INCREMENT ایجاد نشده است، اما با این متد به صورت AUTO_INCREMENT ویرایش می شود.
19- متد dropMorphs
این متد برای حذف ستونی که مربوط به Polymorphic Relations است، استفاده میشود.
$table->dropMorphs('commentable');
20- متد dropRememberToken
این متد برای حذف ستونی که برای ذخیرهی remember token در جداول کاربران استفاده میشود، به کار میرود.
$table->dropRememberToken();
21- متد dropSoftDeletes
این متد برای حذف ستونهایی که مربوط به Soft Deletes هستند استفاده میشود.
$table->dropSoftDeletes();
22- متد dropSoftDeletesTz
این متد مشابه dropSoftDeletes است، اما برای ستونهایی که از نوع timestamp with timezone استفاده میکنند.
23- متد dropTimestamps
این متد برای حذف ستونهای created_at و updated_at استفاده میشود.
$table->dropTimestamps();
24- متد dropTimestampsTz
این متد مشابه dropTimestamps است، اما برای ستونهای created_at و updated_at که با نوع timestamp with timezone ذخیره شدهاند، استفاده میشود.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
⚜️ دوره لاراول - قسمت هفتدهم
📚 مینی پروژه TODo App - دسته بندی ها
خلاصه :
توی این ویدیو مینی پروژه ToDo اپ رو یکمی جلوتر بردیم و هندل کردن بخش دسته بندی ها رو توسعه دادیم... ، یک مقدار ریزی درمورد Log ها حرف زدیم و ازشون استفاده کردیم...
توی قسمت های بعدی این مجموعه رو ادامه میدیم.
🎞 لینک ویدیو:
https://youtu.be/P8WUBBichTM
🔗 Github Repo
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
📚 مینی پروژه TODo App - دسته بندی ها
خلاصه :
توی این ویدیو مینی پروژه ToDo اپ رو یکمی جلوتر بردیم و هندل کردن بخش دسته بندی ها رو توسعه دادیم... ، یک مقدار ریزی درمورد Log ها حرف زدیم و ازشون استفاده کردیم...
توی قسمت های بعدی این مجموعه رو ادامه میدیم.
🎞 لینک ویدیو:
https://youtu.be/P8WUBBichTM
🔗 Github Repo
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
⚜️ دوره لاراول - قسمت هجدهم
📚 مینی پروژه TODo App - تسک ها
خلاصه :
توی این ویدیو مینی پروژه ToDo اپ رو یکمی جلوتر بردیم و هندل کردن بخش تسک ها رو توسعه دادیم...
توی قسمت های بعدی این مجموعه رو ادامه میدیم.
⭕️ یه مقدار در اخر ویدیو مشکل ادیت داریم.
🎞 لینک ویدیو:
https://youtu.be/_cEN-LIi2Lo
🔗 Github Repo
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
📚 مینی پروژه TODo App - تسک ها
خلاصه :
توی این ویدیو مینی پروژه ToDo اپ رو یکمی جلوتر بردیم و هندل کردن بخش تسک ها رو توسعه دادیم...
توی قسمت های بعدی این مجموعه رو ادامه میدیم.
⭕️ یه مقدار در اخر ویدیو مشکل ادیت داریم.
🎞 لینک ویدیو:
https://youtu.be/_cEN-LIi2Lo
🔗 Github Repo
🔖 #Laravel, #PHP, #لاراول
👤 Matin Soleymani
💎 Channel: @DevelopixLaravel
Forwarded from Developix Support
سلام
پرسشنامه پیش رو با هدف درک بهتر رفتار و نیازهای کسبوکارهای اینترنتی ایرانی در استفاده از ابزارهای پرداخت توسط یک تیم پژوهشی مستقل طراحی شده است. نتایج این پژوهش به ما کمک میکند تا ابزارهایی کارآمدتر و منطبق با نیازهای واقعی شما ارائه دهیم. تکمیل این پرسشنامه کاملاً بینام است و هیچ اطلاعات شخصی از شما ذخیره نخواهد شد. پاسخهای شما نقش کلیدی در بهبود خدمات ابزارهای پرداختی اینترنتی در کشور دارد، بنابراین از شما خواهشمندیم با دقت و صداقت به سوالات پاسخ دهید. زمان لازم برای تکمیل: حدود 5 دقیقه لطفاً برای شروع پرسشنامه، روی لینک زیر کلیک کنید و ما را در این مسیر همراهی کنید.
.
https://survey.porsline.ir/s/lEtAnSw8
.
سپاس فراوان از همکاری صمیمانه شما
پرسشنامه پیش رو با هدف درک بهتر رفتار و نیازهای کسبوکارهای اینترنتی ایرانی در استفاده از ابزارهای پرداخت توسط یک تیم پژوهشی مستقل طراحی شده است. نتایج این پژوهش به ما کمک میکند تا ابزارهایی کارآمدتر و منطبق با نیازهای واقعی شما ارائه دهیم. تکمیل این پرسشنامه کاملاً بینام است و هیچ اطلاعات شخصی از شما ذخیره نخواهد شد. پاسخهای شما نقش کلیدی در بهبود خدمات ابزارهای پرداختی اینترنتی در کشور دارد، بنابراین از شما خواهشمندیم با دقت و صداقت به سوالات پاسخ دهید. زمان لازم برای تکمیل: حدود 5 دقیقه لطفاً برای شروع پرسشنامه، روی لینک زیر کلیک کنید و ما را در این مسیر همراهی کنید.
.
https://survey.porsline.ir/s/lEtAnSw8
.
سپاس فراوان از همکاری صمیمانه شما
فصل پنج - Migrations and Database
بخش اول - تعریف و اجرای Migrationها
1- متد unique
این متد یک ایندکس یکتا برای یک یا چند ستون تعریف میکند. ایندکس یکتا باعث میشود که مقدارهای تکراری برای این ستونها در جدول ذخیره نشود.
2- متد index
این متد یک ایندکس ساده برای یک یا چند ستون ایجاد میکند. این ایندکس برای بهبود عملکرد کوئریهایی استفاده میشود که مرتباً این ستونها را جستجو یا فیلتر میکنند.
3- متد primary
این متد یک کلید اصلی (Primary Key) برای یک یا چند ستون تعریف میکند. ستونهای کلید اصلی نمیتوانند مقدار NULL بپذیرند و باید یکتا باشند.
4- متد fullText
این متد یک ایندکس تماممتنی (Full Text Index) برای جستجوی سریع متن در ستونهای متنی (مثل TEXT یا VARCHAR) ایجاد میکند.
5- متد spatialIndex
این متد یک ایندکس مکانی (Spatial Index) برای ستونهای مختصات جغرافیایی (مانند ستونهایی با نوع GEOMETRY) ایجاد میکند.
6- متد renameIndex
این متد کلید اصلی جدول را حذف میکند.
7- متد dropUnique
این متد یک ایندکس یکتا را از جدول حذف میکند.
8- متد dropIndex
این متد یک ایندکس ساده را از جدول حذف میکند.
9- متد dropFullText
این متد یک ایندکس تماممتنی را از جدول حذف میکند.
10- متد dropSpatialIndex
این متد یک ایندکس مکانی را از جدول حذف میکند.
11- متد foreign
این متد مشخص میکند که یک ستون در جدول فعلی قرار است بهعنوان کلید خارجی عمل کند.
معمولاً به همراه متدهای references و on استفاده میشود.
12- متد references
این متد مشخص میکند که کلید خارجی به کدام ستون از جدول دیگر اشاره دارد.
13- متد on
این متد مشخص میکند که کلید خارجی باید به کدام جدول در پایگاه داده متصل شود.
14- متد foreignId
این متد یک راه کوتاهتر برای تعریف ستون کلید خارجی است. به طور پیشفرض، نوع ستون را unsignedBigInteger تعریف میکند.
15- متد constrained
این متد تعریف کلید خارجی را آسانتر و سریعتر میکند. زمانی که از آن استفاده کنید:
- ستون را بهعنوان کلید خارجی تعریف میکند.
- به صورت پیشفرض جدول مقصد را از نام ستون حدس میزند (مثلاً اگر ستون user_id باشد، به جدول users اشاره میکند).
- به ستون id بهعنوان کلید اصلی در جدول مقصد اشاره میکند.
16- متد dropForeign
برای حذف یک کلید خارجی (Foreign Key) در جدول استفاده میشود. این متد زمانی استفاده میشود که بخواهید محدودیتهای کلید خارجی روی یک ستون را از بین ببرید.
17و 18- متد های onUpdate و onDelete
زمانی که یک کلید خارجی (foreign key) تعریف میکنید، میتوانید رفتار حذف یا بهروزرسانی رکوردهای مرتبط را مشخص کنید.
ورودی می تواند حالت های restrict، set null، no action نیز باشد.
19- متد cascadeOnDelete
وقتی رکورد اصلی حذف شود، رکوردهای مرتبط در جدول فرعی هم حذف میشوند.
20- متد restrictOnDelete
اگر رکوردهای مرتبط در جدول فرعی وجود داشته باشند، حذف رکورد اصلی ممنوع است.
21- متد nullOnDelete
اگر رکورد اصلی حذف شود، مقدار کلید خارجی در جدول فرعی به NULL تغییر میکند.
22- متد noActionOnDelete
حذف رکورد اصلی تأثیری روی جدول فرعی ندارد.
23- متد restrictOnUpdate
اگر رکورد مرتبط در جدول فرعی وجود داشته باشد، تغییر مقدار کلید خارجی در جدول اصلی ممنوع است.
24- متد nullOnUpdate
اگر مقدار کلید خارجی در جدول اصلی تغییر کند، مقدار کلید خارجی در جدول فرعی به NULL تغییر میکند.
25- متد noActionOnUpdate
تغییر مقدار کلید خارجی در جدول اصلی تأثیری روی جدول فرعی ندارد.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش اول - تعریف و اجرای Migrationها
1- متد unique
این متد یک ایندکس یکتا برای یک یا چند ستون تعریف میکند. ایندکس یکتا باعث میشود که مقدارهای تکراری برای این ستونها در جدول ذخیره نشود.
$table->string('email')->unique();
2- متد index
این متد یک ایندکس ساده برای یک یا چند ستون ایجاد میکند. این ایندکس برای بهبود عملکرد کوئریهایی استفاده میشود که مرتباً این ستونها را جستجو یا فیلتر میکنند.
$table->string('username')->index();
3- متد primary
این متد یک کلید اصلی (Primary Key) برای یک یا چند ستون تعریف میکند. ستونهای کلید اصلی نمیتوانند مقدار NULL بپذیرند و باید یکتا باشند.
$table->integer('order_id')->primary();
4- متد fullText
این متد یک ایندکس تماممتنی (Full Text Index) برای جستجوی سریع متن در ستونهای متنی (مثل TEXT یا VARCHAR) ایجاد میکند.
$table->fullText('content');
5- متد spatialIndex
این متد یک ایندکس مکانی (Spatial Index) برای ستونهای مختصات جغرافیایی (مانند ستونهایی با نوع GEOMETRY) ایجاد میکند.
$table->point('coordinates')->spatialIndex();
6- متد renameIndex
این متد کلید اصلی جدول را حذف میکند.
$table->dropPrimary();
7- متد dropUnique
این متد یک ایندکس یکتا را از جدول حذف میکند.
$table->dropUnique('users_email_unique');
8- متد dropIndex
این متد یک ایندکس ساده را از جدول حذف میکند.
$table->dropIndex('users_username_index');
9- متد dropFullText
این متد یک ایندکس تماممتنی را از جدول حذف میکند.
$table->dropFullText('articles_content_fulltext');
10- متد dropSpatialIndex
این متد یک ایندکس مکانی را از جدول حذف میکند.
$table->dropSpatialIndex('locations_coordinates_spatialindex');
11- متد foreign
این متد مشخص میکند که یک ستون در جدول فعلی قرار است بهعنوان کلید خارجی عمل کند.
معمولاً به همراه متدهای references و on استفاده میشود.
$table->unsignedBigInteger('user_id');
$table->foreign('user_id');
12- متد references
این متد مشخص میکند که کلید خارجی به کدام ستون از جدول دیگر اشاره دارد.
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id');
13- متد on
این متد مشخص میکند که کلید خارجی باید به کدام جدول در پایگاه داده متصل شود.
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
14- متد foreignId
این متد یک راه کوتاهتر برای تعریف ستون کلید خارجی است. به طور پیشفرض، نوع ستون را unsignedBigInteger تعریف میکند.
$table->foreignId('user_id');
15- متد constrained
این متد تعریف کلید خارجی را آسانتر و سریعتر میکند. زمانی که از آن استفاده کنید:
- ستون را بهعنوان کلید خارجی تعریف میکند.
- به صورت پیشفرض جدول مقصد را از نام ستون حدس میزند (مثلاً اگر ستون user_id باشد، به جدول users اشاره میکند).
- به ستون id بهعنوان کلید اصلی در جدول مقصد اشاره میکند.
$table->foreignId('user_id')->constrained('users');
16- متد dropForeign
برای حذف یک کلید خارجی (Foreign Key) در جدول استفاده میشود. این متد زمانی استفاده میشود که بخواهید محدودیتهای کلید خارجی روی یک ستون را از بین ببرید.
$table->dropForeign('posts_user_id_foreign');
17و 18- متد های onUpdate و onDelete
زمانی که یک کلید خارجی (foreign key) تعریف میکنید، میتوانید رفتار حذف یا بهروزرسانی رکوردهای مرتبط را مشخص کنید.
$table->foreignId('user_id')->constrained('users')->onDelete('cascade')->onUpdate('cascade');
ورودی می تواند حالت های restrict، set null، no action نیز باشد.
19- متد cascadeOnDelete
وقتی رکورد اصلی حذف شود، رکوردهای مرتبط در جدول فرعی هم حذف میشوند.
$table->foreignId('user_id')->constrained('users')->cascadeOnDelete();
20- متد restrictOnDelete
اگر رکوردهای مرتبط در جدول فرعی وجود داشته باشند، حذف رکورد اصلی ممنوع است.
21- متد nullOnDelete
اگر رکورد اصلی حذف شود، مقدار کلید خارجی در جدول فرعی به NULL تغییر میکند.
22- متد noActionOnDelete
حذف رکورد اصلی تأثیری روی جدول فرعی ندارد.
23- متد restrictOnUpdate
اگر رکورد مرتبط در جدول فرعی وجود داشته باشد، تغییر مقدار کلید خارجی در جدول اصلی ممنوع است.
24- متد nullOnUpdate
اگر مقدار کلید خارجی در جدول اصلی تغییر کند، مقدار کلید خارجی در جدول فرعی به NULL تغییر میکند.
25- متد noActionOnUpdate
تغییر مقدار کلید خارجی در جدول اصلی تأثیری روی جدول فرعی ندارد.
🔖 #Laravel, #PHP, #فصل_۵, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بلاخره اکستنشن جدید 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
فصل پنج - 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
فصل پنج - 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
فصل پنج - 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
فصل پنج - 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
⚜️ دوره لاراول - قسمت نوزدهم
📚 مینی پروژه 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
فصل پنج - 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
⚜️ دوره لاراول - قسمت نوزدهم
📚 الکوئنت ، فکتوریها | 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
فصل پنج - 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
Forwarded from | کانال توسعهدهندگان PHP |
❓ خروجی حلقه کدام است؟
1️⃣ Error
2️⃣ 10 9 8 7 6 5 4 3 2 1
3️⃣ Warning
4️⃣ 9 8 7 6 5 4 3 2 1 0
✅ پاسخ خود را همراه با توضیح ارائه دهید.
❗ بدون اجرای کد یا استفاده از هوش مصنوعی، کمی فکر کنید.
🔖 #PHP, #پی_اچ_پی, #چالش
👤 AmirHossein
💎 Channel: @DevelopixPHP
1️⃣ Error
2️⃣ 10 9 8 7 6 5 4 3 2 1
3️⃣ Warning
4️⃣ 9 8 7 6 5 4 3 2 1 0
✅ پاسخ خود را همراه با توضیح ارائه دهید.
❗ بدون اجرای کد یا استفاده از هوش مصنوعی، کمی فکر کنید.
🔖 #PHP, #پی_اچ_پی, #چالش
👤 AmirHossein
💎 Channel: @DevelopixPHP
Forwarded from | کانال توسعهدهندگان PHP |
🔰 در این سوال نکات زیادی حائز اهمیت است که معمولا در نظر گرفته نمیشود.
🔍 در ادامه، ساختار حلقه را بهطور مفصل بررسی میکنیم:
خروجی این حلقه بهصورت زیر خواهد بود:
⁉️ اما چرا؟
بیایید ساختار حلقه را از ابتدا بررسی کنیم.
🔰 ساختار کلی حلقه for
حلقه for از سه بخش تشکیل شده است:
1- شروع: مقداردهی اولیه متغیر حلقه.
این بخش تنها یک بار در ابتدای حلقه اجرا میشود.
2- شرط ادامه: تعیین میکند که آیا حلقه ادامه یابد یا متوقف شود.
این بخش در هر تکرار، قبل از اجرای بدنه اجرا شده و شرط اجرای بدنه را بررسی میکند.
3- تغییر مقدار: مقدار متغیر حلقه را تغییر میدهد.
این بخش پس از اجرای بدنه حلقه اجرا میشود.
🔰 بررسی اجرای حلقه ذکر شده
1- مقداردهی اولیه:
- ابتدا متغیر
2- بررسی شرط (
در این قسمت نکات مهمی وجود دارد:
- هر عدد به جز 0 مقدار true دارد، بنابراین تا زمانی که
- در عبارت
- - به همین دلیل عدد 0 نیز چاپ خواهد شد.
- - مقدار
اگر حلقه به این صورت نوشته میشد:
در این حالت، ابتدا مقدار
3- بررسی قسمت سوم (تغییر مقدار update)
- بخش سوم این حلقه روی مقدار
🔰 مرور روند اجرای حلقه ذکر شده
- مقدار دهی اولیه i با 10
- بررسی 10 == true، کاهش 10 به 9، چاپ 9
- بررسی 9 == true، کاهش 9 به 8، چاپ 8
.
.
.
- بررسی 2 == true، کاهش 2 به 1، چاپ 1
- بررسی 1 == true، کاهش 1 به 0، چاپ 0
- بررسی 0 == true، پایان حلقه
❗️ درک درست post-decrement ($i--) و pre-decrement (--$i) در حلقهها اهمیت زیادی دارد و تفاوتهای ظریفی در خروجی ایجاد میکند.
🔖 #PHP, #پی_اچ_پی, #چالش
👤 AmirHossein
💎 Channel: @DevelopixPHP
🔍 در ادامه، ساختار حلقه را بهطور مفصل بررسی میکنیم:
for ($i = 10; $i--; $i > 0) {
echo "$i ";
}
خروجی این حلقه بهصورت زیر خواهد بود:
9 8 7 6 5 4 3 2 1 0
⁉️ اما چرا؟
بیایید ساختار حلقه را از ابتدا بررسی کنیم.
🔰 ساختار کلی حلقه for
حلقه for از سه بخش تشکیل شده است:
1- شروع: مقداردهی اولیه متغیر حلقه.
این بخش تنها یک بار در ابتدای حلقه اجرا میشود.
2- شرط ادامه: تعیین میکند که آیا حلقه ادامه یابد یا متوقف شود.
این بخش در هر تکرار، قبل از اجرای بدنه اجرا شده و شرط اجرای بدنه را بررسی میکند.
3- تغییر مقدار: مقدار متغیر حلقه را تغییر میدهد.
این بخش پس از اجرای بدنه حلقه اجرا میشود.
🔰 بررسی اجرای حلقه ذکر شده
1- مقداردهی اولیه:
- ابتدا متغیر
$i
مقدار 10 میگیرد و اجرای این بخش پایان مییابد.2- بررسی شرط (
$i--
)در این قسمت نکات مهمی وجود دارد:
- هر عدد به جز 0 مقدار true دارد، بنابراین تا زمانی که
$i
به 0 نرسد، حلقه ادامه خواهد داشت.- در عبارت
$i--
از عملیات post-decrement استفاده شده است، یعنی ابتدا مقدار فعلی $i
برای بررسی شرط استفاده میشود، سپس مقدار $i
کاهش مییابد.- - به همین دلیل عدد 0 نیز چاپ خواهد شد.
- - مقدار
$i
بعد از کاهش وارد بدنه حلقه میشود، بنابراین چاپ اعداد از 9 شروع میشود.اگر حلقه به این صورت نوشته میشد:
for ($i = 10; --$i; $i > 0) {
echo "$i ";
}
در این حالت، ابتدا مقدار
$i
کاهش مییابد و سپس شرط بررسی میشود زیرا از عملیات pre-decrement، بنابراین 0 چاپ نمیشود و خروجی به این شکل خواهد بود:9 8 7 6 5 4 3 2 1
3- بررسی قسمت سوم (تغییر مقدار update)
- بخش سوم این حلقه روی مقدار
$i
تغییری ایجاد نمیکند، بنابراین عملاً بیاثر است و میتوان حلقه را سادهتر نوشت:for ($i = 10; $i--;) {
echo "$i ";
}
🔰 مرور روند اجرای حلقه ذکر شده
- مقدار دهی اولیه i با 10
- بررسی 10 == true، کاهش 10 به 9، چاپ 9
- بررسی 9 == true، کاهش 9 به 8، چاپ 8
.
.
.
- بررسی 2 == true، کاهش 2 به 1، چاپ 1
- بررسی 1 == true، کاهش 1 به 0، چاپ 0
- بررسی 0 == true، پایان حلقه
❗️ درک درست post-decrement ($i--) و pre-decrement (--$i) در حلقهها اهمیت زیادی دارد و تفاوتهای ظریفی در خروجی ایجاد میکند.
🔖 #PHP, #پی_اچ_پی, #چالش
👤 AmirHossein
💎 Channel: @DevelopixPHP
Forwarded from Developix Support
🥳مسابقۀ ۱۰۰ میلیونی ساخت بات در اپلیکیشن بله!🦾
💰 مسابقهای برای ساخت بازو (بات) و مینیاپ در اپلیکیشن بله
🎯 از استعدادت پول در بیار!
❓چطوری؟
بله با مسابقهٔ «زور بازوت رو نشون بده!» یک فرصت عالی برای مهندسین نرمافزار، وب دولوپرها، صاحبان سایتها و اپلیکیشنها و تیمهای محصول فراهم کرده که پاسخگوی این دغدغههاست.
🎁 یه مسابقه با ۱۰۰ میلیون تومن جایزهٔ نقدی و ۱ میلیارد تومن اعتبار تبلیغات منتظرته! ♨️
📎 همین الان در مسابقه ثبتنام کن! ➡️
💬 کانال اخبار بازو دراپلیکیشن بله
کانال اطلاعرسانی بله | @BaleMessenger
💰 مسابقهای برای ساخت بازو (بات) و مینیاپ در اپلیکیشن بله
🎯 از استعدادت پول در بیار!
❓چطوری؟
بله با مسابقهٔ «زور بازوت رو نشون بده!» یک فرصت عالی برای مهندسین نرمافزار، وب دولوپرها، صاحبان سایتها و اپلیکیشنها و تیمهای محصول فراهم کرده که پاسخگوی این دغدغههاست.
🎁 یه مسابقه با ۱۰۰ میلیون تومن جایزهٔ نقدی و ۱ میلیارد تومن اعتبار تبلیغات منتظرته! ♨️
📎 همین الان در مسابقه ثبتنام کن! ➡️
💬 کانال اخبار بازو دراپلیکیشن بله
کانال اطلاعرسانی بله | @BaleMessenger
فصل شش - 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
فصل شش - Requests and Response
بخش اول - پردازش درخواست و پاسخ
لاراول برای مدیریت درخواستها از کلاس Illuminate\Http\Request استفاده میکند که قابلیتهای زیادی برای دسترسی و فیلتر کردن دادههای ورودی دارد.
این کلاس معمولا در Controller ها یا Route-Closure ها استفاده می شود:
در ادامه با متد های در دسترس از این کلاس آشنا می شویم.
1- متد path
این متد مسیر درخواست شده را بدون دامنه برمیگرداند.
2- متد is
بررسی میکند که مسیر درخواست با یک الگو مطابقت دارد یا نه.
3- متد routeIs
بررسی میکند که مسیر درخواست با نام روت خاصی مطابقت دارد یا نه.
4- متد url
آدرس کامل بدون query string را برمیگرداند.
5- متد fullUrl
آدرس کامل شامل query string را برمیگرداند.
6- متد fullUrlWithQuery
یک پارامتر کوئری را به URL اضافه میکند.
7- متد fullUrlWithoutQuery
برخی از پارامترهای کوئری را از URL حذف میکند.
8- متد host
دامنه درخواست را برمیگرداند.
9- متد httpHost
دامنه همراه با پورت را برمیگرداند.
10- متد schemeAndHttpHost
پروتکل (http یا https) و دامنه را برمیگرداند.
11- متد ip
آدرس IP درخواستدهنده را برمیگرداند.
12- متد ips
لیست IPهای درخواستدهنده را برمیگرداند.
13- متد method
متد HTTP درخواست (GET, POST, PUT, DELETE) را برمیگرداند.
14- متد isMethod
بررسی میکند که متد HTTP درخواست مقدار خاصی دارد یا نه.
15- متد header
مقدار یک هدر خاص را برمیگرداند.
16- متد hasHeader
بررسی میکند که آیا یک هدر مشخص در درخواست وجود دارد یا نه.
17- متد bearerToken
مقدار Bearer Token در هدر Authorization را برمیگرداند.
18- متد getAcceptableContentTypes
لیستی از انواع محتوای مورد قبول در هدر Accept را برمیگرداند.
19- متد accepts
بررسی میکند که آیا نوع محتوای مشخصشده پذیرفته شده است یا نه.
20- متد prefers
نوع محتوای ترجیحی را برمیگرداند.
21- متد expectsJson
بررسی میکند که آیا درخواست انتظار JSON دارد یا نه.
22- متد flash
دادهها را برای درخواست بعدی در سشن ذخیره میکند.
23- متد flashOnly
برخی از دادهها را در سشن ذخیره میکند.
24- متد flashExcept
تمام دادهها بهجز موارد مشخصشده را در سشن ذخیره میکند.
25- متد only
فقط مقادیر مشخصشده را از درخواست دریافت میکند.
26- متد except
تمام مقادیر درخواست بهجز موارد مشخصشده را دریافت میکند.
سایر متد ها در پست بعدی توضیح داده میشود.
🔖 #Laravel, #PHP, #فصل_۶, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش اول - پردازش درخواست و پاسخ
لاراول برای مدیریت درخواستها از کلاس Illuminate\Http\Request استفاده میکند که قابلیتهای زیادی برای دسترسی و فیلتر کردن دادههای ورودی دارد.
این کلاس معمولا در Controller ها یا Route-Closure ها استفاده می شود:
class UserController extends Controller
{
public function store(Request $request)
{
$request->...
}
}
// OR
Route::get('/', function(Request $request) {
$request->...
});
در ادامه با متد های در دسترس از این کلاس آشنا می شویم.
1- متد path
این متد مسیر درخواست شده را بدون دامنه برمیگرداند.
$request->path(); // posts/10
2- متد is
بررسی میکند که مسیر درخواست با یک الگو مطابقت دارد یا نه.
if ($request->is('posts/*')) {
}
3- متد routeIs
بررسی میکند که مسیر درخواست با نام روت خاصی مطابقت دارد یا نه.
if ($request->routeIs('post.show')) {
}
4- متد url
آدرس کامل بدون query string را برمیگرداند.
$request->url(); // http://example.com/posts/10
5- متد fullUrl
آدرس کامل شامل query string را برمیگرداند.
$request->fullUrl();
// http://example.com/posts/10?sort=desc
6- متد fullUrlWithQuery
یک پارامتر کوئری را به URL اضافه میکند.
$request->fullUrlWithQuery(['page' => 2]);
// http://example.com/posts?sort=desc&page=2
7- متد fullUrlWithoutQuery
برخی از پارامترهای کوئری را از URL حذف میکند.
$request->fullUrlWithoutQuery(['sort']);
// http://example.com/posts?page=2
8- متد host
دامنه درخواست را برمیگرداند.
$request->host(); // example.com
9- متد httpHost
دامنه همراه با پورت را برمیگرداند.
$request->httpHost(); // example.com:8080
10- متد schemeAndHttpHost
پروتکل (http یا https) و دامنه را برمیگرداند.
$request->schemeAndHttpHost();
// https://example.com
11- متد ip
آدرس IP درخواستدهنده را برمیگرداند.
$request->ip(); // 192.168.1.1
12- متد ips
لیست IPهای درخواستدهنده را برمیگرداند.
$request->ips();
// [192.168.1.1, 10.0.0.2]
13- متد method
متد HTTP درخواست (GET, POST, PUT, DELETE) را برمیگرداند.
$request->method(); // POST
14- متد isMethod
بررسی میکند که متد HTTP درخواست مقدار خاصی دارد یا نه.
if ($request->isMethod('post')) {
}
15- متد header
مقدار یک هدر خاص را برمیگرداند.
$request->header('User-Agent'); // "Mozilla/5.0"
16- متد hasHeader
بررسی میکند که آیا یک هدر مشخص در درخواست وجود دارد یا نه.
if ($request->hasHeader('Authorization')) {
}
17- متد bearerToken
مقدار Bearer Token در هدر Authorization را برمیگرداند.
$request->bearerToken();
18- متد getAcceptableContentTypes
لیستی از انواع محتوای مورد قبول در هدر Accept را برمیگرداند.
$request->getAcceptableContentTypes();
// ['application/json', 'text/html']
19- متد accepts
بررسی میکند که آیا نوع محتوای مشخصشده پذیرفته شده است یا نه.
if ($request->accepts('application/json')) {
}
20- متد prefers
نوع محتوای ترجیحی را برمیگرداند.
$request->prefers(['text/html', 'application/json']);
21- متد expectsJson
بررسی میکند که آیا درخواست انتظار JSON دارد یا نه.
if ($request->expectsJson()) {
}
22- متد flash
دادهها را برای درخواست بعدی در سشن ذخیره میکند.
$request->flash();
23- متد flashOnly
برخی از دادهها را در سشن ذخیره میکند.
$request->flashOnly(['name', 'email']);
24- متد flashExcept
تمام دادهها بهجز موارد مشخصشده را در سشن ذخیره میکند.
$request->flashExcept(['password']);
25- متد only
فقط مقادیر مشخصشده را از درخواست دریافت میکند.
$request->only(['name', 'email']);
26- متد except
تمام مقادیر درخواست بهجز موارد مشخصشده را دریافت میکند.
$request->except(['password']);
سایر متد ها در پست بعدی توضیح داده میشود.
🔖 #Laravel, #PHP, #فصل_۶, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
فصل شش - Requests and Response
بخش اول - پردازش درخواست و پاسخ
در این قسمت به سایر متدهای در دسترس از کلاس Request می پردازیم.
1- متد cookie
مقدار یک کوکی را برمیگرداند.
2- متد all
تمام دادههای ورودی (query parameters، POST data، JSON payloads) را بهصورت آرایه برمیگرداند.
3- متد collect
دادههای ورودی را بهعنوان Collection لاراول برمیگرداند.
کالکشنها در لاراول مجموعهای از دادهها هستند که امکانات پیشرفتهای برای کار با آرایهها ارائه میدهند.
در فصل های مربوطه به کار با کالکشن ها خواهیم پرداخت.
4- متد input
مقدار یک ورودی خاص را دریافت میکند.
همچنین می توان input مورد نظر را به صورت پراپرتی دریافت کرد:
5- متد query
مقدار یک متغیر در query string را دریافت میکند.
پارامتر اول کلید کوئری و پارامتر دوم مقدار پیشفرض می باشد.
6- متد string
مقدار یک ورودی را بهعنوان Stringable لاراول برمیگرداند.
در لاراول Stringable همانند کالکشن که برای کار با آرایه ها است، برای کار با رشته ها می باشد.
این متد input با نام name را در قالب شئ از Stringable باز می گرداند و می توان متد های زیادی را بر روی آن فراخوانی کرد:
7- متد integer
مقدار ورودی را به عدد صحیح (integer) تبدیل میکند.
8- متد boolean
مقدار ورودی را به مقدار بولی (true یا false) تبدیل میکند.
9- متد date
مقدار ورودی را به شیء Carbon تبدیل میکند.
کربن نیز یک کلاس برای کار با زمان ها می باشد.
10- متد enum
مقدار ورودی را با یک enum مقایسه میکند.
11- متد enums
چند مقدار ورودی را با یک enum بررسی میکند.
12- متد has
بررسی میکند که آیا مقدار مشخصی در درخواست وجود دارد یا نه.
13- متد hasAny
بررسی میکند که آیا حداقل یکی از مقادیر مشخصشده در درخواست وجود دارد یا نه.
14- متد whenHas
اگر مقدار مشخصشده در درخواست وجود داشته باشد، یک تابع را اجرا میکند.
15- متد isNotFilled
بررسی میکند که مقدار ورودی وجود نداشته باشد یا خالی باشد.
16- متد filled
بررسی میکند که مقدار مشخصشده در درخواست پر شده باشد.
17- متد anyFilled
بررسی میکند که حداقل یکی از مقادیر مشخصشده در درخواست پر شده باشد.
18- متد whenFilled
اگر مقدار مشخصشده در درخواست پر شده باشد، یک تابع را اجرا میکند.
19- متد missing
بررسی میکند که مقدار مشخصشده در درخواست وجود نداشته باشد.
20- متد whenMissing
اگر مقدار مشخصشده در درخواست وجود نداشته باشد، یک تابع را اجرا میکند.
21- متد merge
مقدار جدیدی به دادههای درخواست اضافه میکند.
22- متد mergeIfMissing
مقدار جدیدی را فقط در صورتی که وجود نداشته باشد اضافه میکند.
23- متد file
یک فایل آپلودی را در قالب شئ از فایل دریافت میکند و می توان عملیات های مختلف مانند ذخیره سازی بر روی آن اجرا کرد.
24- متد hasFile
بررسی میکند که آیا فایلی آپلود شده است یا نه.
25- متد old
مقدار یک ورودی را از session دریافت میکند. (معمولا درخواست قبلی)
تا اینجا با تمامی متد های قابل فراخوانی از کلاس Request آشنا شده ایم، در قسمت بعدی به متد های Response خواهیم پرداخت.
🔖 #Laravel, #PHP, #فصل_۶, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel
بخش اول - پردازش درخواست و پاسخ
در این قسمت به سایر متدهای در دسترس از کلاس Request می پردازیم.
1- متد cookie
مقدار یک کوکی را برمیگرداند.
$value = $request->cookie('user_token');
2- متد all
تمام دادههای ورودی (query parameters، POST data، JSON payloads) را بهصورت آرایه برمیگرداند.
$data = $request->all();
3- متد collect
دادههای ورودی را بهعنوان Collection لاراول برمیگرداند.
کالکشنها در لاراول مجموعهای از دادهها هستند که امکانات پیشرفتهای برای کار با آرایهها ارائه میدهند.
در فصل های مربوطه به کار با کالکشن ها خواهیم پرداخت.
$collection = $request->collect();
4- متد input
مقدار یک ورودی خاص را دریافت میکند.
$name = $request->input('name');
همچنین می توان input مورد نظر را به صورت پراپرتی دریافت کرد:
$name = $request->name;
5- متد query
مقدار یک متغیر در query string را دریافت میکند.
$sort = $request->query('sort', 'asc');
پارامتر اول کلید کوئری و پارامتر دوم مقدار پیشفرض می باشد.
6- متد string
مقدار یک ورودی را بهعنوان Stringable لاراول برمیگرداند.
در لاراول Stringable همانند کالکشن که برای کار با آرایه ها است، برای کار با رشته ها می باشد.
$name = $request->string('name');
این متد input با نام name را در قالب شئ از Stringable باز می گرداند و می توان متد های زیادی را بر روی آن فراخوانی کرد:
$name = $request->string('name')->upper();
7- متد integer
مقدار ورودی را به عدد صحیح (integer) تبدیل میکند.
$age = $request->integer('age');
8- متد boolean
مقدار ورودی را به مقدار بولی (true یا false) تبدیل میکند.
$active = $request->boolean('active');
9- متد date
مقدار ورودی را به شیء Carbon تبدیل میکند.
کربن نیز یک کلاس برای کار با زمان ها می باشد.
$birthday = $request->date('birthday');
10- متد enum
مقدار ورودی را با یک enum مقایسه میکند.
$status = $request->enum('status', OrderStatus::class);
11- متد enums
چند مقدار ورودی را با یک enum بررسی میکند.
$statuses = $request->enums('statuses', OrderStatus::class);
12- متد has
بررسی میکند که آیا مقدار مشخصی در درخواست وجود دارد یا نه.
if ($request->has('name')) {
}
13- متد hasAny
بررسی میکند که آیا حداقل یکی از مقادیر مشخصشده در درخواست وجود دارد یا نه.
if ($request->hasAny(['name', 'email'])) {
}
14- متد whenHas
اگر مقدار مشخصشده در درخواست وجود داشته باشد، یک تابع را اجرا میکند.
$request->whenHas('name', function ($name) {
});
15- متد isNotFilled
بررسی میکند که مقدار ورودی وجود نداشته باشد یا خالی باشد.
if ($request->isNotFilled('email')) {
}
16- متد filled
بررسی میکند که مقدار مشخصشده در درخواست پر شده باشد.
if ($request->filled('email')) {
}
17- متد anyFilled
بررسی میکند که حداقل یکی از مقادیر مشخصشده در درخواست پر شده باشد.
if ($request->anyFilled(['email', 'phone'])) {
}
18- متد whenFilled
اگر مقدار مشخصشده در درخواست پر شده باشد، یک تابع را اجرا میکند.
$request->whenFilled('email', function ($email) {
});
19- متد missing
بررسی میکند که مقدار مشخصشده در درخواست وجود نداشته باشد.
if ($request->missing('email')) {
}
20- متد whenMissing
اگر مقدار مشخصشده در درخواست وجود نداشته باشد، یک تابع را اجرا میکند.
$request->whenMissing('email', function () {
});
21- متد merge
مقدار جدیدی به دادههای درخواست اضافه میکند.
$request->merge(['role' => 'admin']);
22- متد mergeIfMissing
مقدار جدیدی را فقط در صورتی که وجود نداشته باشد اضافه میکند.
$request->mergeIfMissing(['role' => 'user']);
23- متد file
یک فایل آپلودی را در قالب شئ از فایل دریافت میکند و می توان عملیات های مختلف مانند ذخیره سازی بر روی آن اجرا کرد.
$file = $request->file('avatar');
24- متد hasFile
بررسی میکند که آیا فایلی آپلود شده است یا نه.
if ($request->hasFile('avatar')) {
}
25- متد old
مقدار یک ورودی را از session دریافت میکند. (معمولا درخواست قبلی)
$oldValue = $request->old('name');
تا اینجا با تمامی متد های قابل فراخوانی از کلاس Request آشنا شده ایم، در قسمت بعدی به متد های Response خواهیم پرداخت.
🔖 #Laravel, #PHP, #فصل_۶, #لاراول
👤 AmirHossein
💎 Channel: @DevelopixLaravel