لإضافة القيود (Constraints) في Laravel Migration، يمكنك استخدام الـ DB::statement
لتنفيذ الأوامر الخاصة بقاعدة البيانات. في حالتك، يمكنك إضافة الـ CHECK
constraint كالتالي:
phpuse Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePayrollTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('payroll', function (Blueprint $table) {
$table->increments('id');
$table->integer('PositionID');
$table->decimal('Salary', 9, 2);
});
// Add CHECK constraint
DB::statement('ALTER TABLE payroll ADD CONSTRAINT check_salary CHECK (Salary < 150000.00)');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('payroll');
}
}
في الدالة up
، أنشأنا الجدول باستخدام Schema::create
كالمعتاد، ثم استخدمنا DB::statement
لإضافة الـ CHECK
constraint. في الحالة العادية، يجب أن يتم إلغاء هذا القيد في الدالة down
باستخدام Schema::dropIfExists
، ولكن يمكنك تجاهل ذلك إذا كنت لا ترغب في إلغاء الجدول في عملية الرجوع (rollback).
-
حل مشكلة قفل قاعدة البيانات في Laravel17/03/2024
-
إنشاء مزود خدمة فعّال في Laravel: دليل شامل26/01/2024
-
بناء Laravel من نواة معدلة03/04/2024
يرجى ملاحظة أن بعض أنظمة قواعد البيانات لا تدعم الـ CHECK
constraints، لذا تأكد من أن قاعدة البيانات الخاصة بك تدعمها قبل استخدامها.
المزيد من المعلومات
بالطبع! يمكننا إضافة بعض المعلومات الإضافية عن كيفية تعامل Laravel مع الـ CHECK
constraints:
-
قيد الفحص (CHECK Constraint): في بعض أنظمة إدارة قواعد البيانات، يتم استخدام
CHECK
constraint لتحقق من صحة القيم المُدخلة إلى الجدول وفقًا لشرط محدد. على الرغم من أن MySQL و SQLite لا تدعم القيود التحقق، إلا أن PostgreSQL يدعمها. -
التنفيذ باستخدام
DB::statement
: عندما تحتاج إلى استخدام عبارات SQL مخصصة في ملف الترحيل، يمكنك استخدامDB::statement
. هذا يُتيح لك تنفيذ العبارات SQL المعقدة بدقة. -
إلغاء القيد في الـ
down
دالة: في دالةdown
، يُنصح بإلغاء القيد المضاف إذا كانت العملية قابلة للرجوع. يتم ذلك عن طريق استخدامDB::statement
لإزالة القيد. -
تأكد من دعم القيود: قبل استخدام القيود في Laravel Migration، تأكد من أن نظام قاعدة البيانات الذي تستخدمه يدعم هذه القيود.