Hanan Fahad2 نشر 2 يونيو 2021 أرسل تقرير نشر 2 يونيو 2021 كيف اربط جدولين بلارافل في migration بنوع حقل forign key 1 اقتباس
0 بلال زيادة نشر 2 يونيو 2021 أرسل تقرير نشر 2 يونيو 2021 يجب أن يكون لديكي حقل في الجدول الذي تريدين ربطه بالثاني فمثلاً إذا كان لديكي جدول users بهذا الشكل user id = integer name = varchar وتريدين ربط كل Post يقوم بنشره في جدول posts بهذا الشكل user id = integer name = varchar user_id = integer - forign key فكل عملية نشر لمنشور تقومين بتخزين رقم اليوزر الذي قام بنشر هذا المنشور بحقل user_id في جدول posts. و إذا أردنا تطبيق ذلك في لارافل Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->unsignedInteger('id_employe'); $table->rememberToken(); $table->timestamps(); $table->foreign('id_employe') ->references('id') ->on('employes') ->onDelete('cascade'); }); Schema::create('employes', function (Blueprint $table) { $table->increments('id'); $table->string('personnel_number')->nullable(); $table->string('name')->nullable(); $table->timestamps(); }); فقمنا باستخدام $table->foreign('id_employe') ->references('id') ->on('employes') ->onDelete('cascade'); لربط جدول employes بجدول users عن طريق foreign key اقتباس
0 Hanan Fahad2 نشر 2 يونيو 2021 الكاتب أرسل تقرير نشر 2 يونيو 2021 ابغا الكود لارافل مش شرح انا فاهمه بس ضيعت وين قريت المعلومه بحسوب بدوره 1 اقتباس
0 بلال زيادة نشر 2 يونيو 2021 أرسل تقرير نشر 2 يونيو 2021 بتاريخ 2 دقائق مضت قال hanan fahad11: ابغا الكود لارافل مش شرح انا فاهمه بس ضيعت وين قريت المعلومه بحسوب بدوره ممكن تنظري للإجابة السابقة مرة أخرى, حدث خطأ معي و لم يظهر كامل الإجابة فقمت بتعديلها مرة أخرى. اقتباس
0 سمير عبود نشر 2 يونيو 2021 أرسل تقرير نشر 2 يونيو 2021 يوفّر Laravel دعم لإنشاء قيود المفاتيح الثانوية، على سبيل المثال لنفرض أننا نريد إضافة مفتاح ثانوي على مُستوى جدول مقالات مرجعه هو المفتاح الأولي في جدول المُستخدمين فإننا نعرّف عمود user_id على جدول posts الذي يشير إلى عمود id في جدول users بهذا الشكل: Schema::table('posts', function (Blueprint $table) { // .. $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); }); ملاحظة يجب أن يكون المفتاح الثانوي و المفتاح الأولي الذي يشير إليه من نفس النوع و في الإصدارات الأخيرة أصبح نوع المفتاح الأولي المستخدم من طرف لارافل هو BigInteger بعكس الإصدارات الأقدم كان Integer. يمكنك تحديد الإجراء المطلوب أيضًا لخصائص "on delete" و"on update" من القيد: $table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade'); في الإصدار الثامن تم إختصار السطرين أي تعريف الحقل و جعله كمفتاح ثانوي و إضافة القيد بالتالي: Schema::table('posts', function (Blueprint $table) { $table->foreignId('user_id')->constrained(); }); حيث أن التابع foreignId هو إختصار ل unsignedBigInteger بينما constrained هو تابع يُستخدم لتحديد الجدول و العمود الذي سيتم الإشارة إليه. إذا كنت تتبع التسمية user_id فلارافل ستُحدد الجدول المشار إليه من إسم الحقل على أنه users لكن إن لم تتبع العُرف في التسمية و لنفرض أنك أردت تسمية الحقل ب created_by فتحتاج إلى تمرير إسم الجدول كمعامل للتابع constrained بهذا الشكل: Schema::table('posts', function (Blueprint $table) { $table->foreignId('created_by')->constrained("users"); }); اقتباس
0 Hanan Fahad2 نشر 2 يونيو 2021 الكاتب أرسل تقرير نشر 2 يونيو 2021 سويت مازلت اجهل يعطيني اخطاء trining.rar اقتباس
0 سمير عبود نشر 2 يونيو 2021 أرسل تقرير نشر 2 يونيو 2021 بتاريخ الآن قال hanan fahad11: سويت مازلت اجهل يعطيني اخطاء trining.rar ماهو الخطأ الذي يظهر ؟ اقتباس
0 سمير عبود نشر 2 يونيو 2021 أرسل تقرير نشر 2 يونيو 2021 بتاريخ 5 دقائق مضت قال hanan fahad11: الخطأ المُرفق ليس لنفس الملف بل لمشروع آخر، أيضاً هل بإمكانك توضيح الكيفية التي تقومين بها بإضافة المفتاح الثانوي أعتقد أنك تتبعين طريقة خاطئة. اقتباس
0 سمير عبود نشر 2 يونيو 2021 أرسل تقرير نشر 2 يونيو 2021 بتاريخ 1 دقيقة مضت قال hanan fahad11: سوري هذا هو السبب أنك تقومين بالإشارة إلى جدول لم يتم إنشاؤه بعد فملف التهجير genders موجود في الترتيب بعد ملف people فلحل المُشكل قومي بتغيير إسم ملف التهجير لجدول genders ليكون قبل people مثلاً بهذا الإسم: 2021_06_01_095234_create_genders_table.php بعد ذلك في ملف people قومي بتغيير: $table->increments('id'); إلى: $table->id(); حتى يتم إستخدام نفس النوع لحقول المفاتيح الأولية و حتى لا تحدث أخطاء مستقبلية بسبب النوع. بعد ذلك يُمكنك إعادة تنفيذ أمر التهجير: php artisan migrate:fresh اقتباس
0 Hanan Fahad2 نشر 3 يونيو 2021 الكاتب أرسل تقرير نشر 3 يونيو 2021 اذا عندي جدول وسيط وعندي فيه مفتاح رئيسي اثنين كيف اعملها في رافل بالاكواد مثلا الجدول الوسيط رقم الطالب ورقم التخصص كل الاثنين مفتاح رئيسي كجدول وسيط علاقه many to many كيف اسويها بالارافل اقتباس
0 Wael Aljamal نشر 3 يونيو 2021 أرسل تقرير نشر 3 يونيو 2021 بتاريخ 5 ساعات قال hanan fahad11: اذا عندي جدول وسيط وعندي فيه مفتاح رئيسي اثنين كيف اعملها في رافل بالاكواد مثلا الجدول الوسيط رقم الطالب ورقم التخصص كل الاثنين مفتاح رئيسي كجدول وسيط علاقه many to many كيف اسويها بالارافل يمكن تحقيقك ذلك من خلال علاقة belongsToMany بوضعها في كلا النوذجين Model الذين يحققان many to many: مثلا لدينا قاعدة بيانات فيها مستخدمين و كل مستخدم يمكن أن يكون له عدة أدوار، والدور الواحد متاج لعدة مستخدمين فيكون نموذج المستخدم: <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { public function roles() { return $this->belongsToMany(Role::class); } } ونموذج الدور: <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Role extends Model { public function users() { return $this->belongsToMany(User::class); } } حيث كما تلاحظين قمنا بوضع دالة تقوم ببناء العلاقة المطلوبة belongsToMany في كل من النموذجين 1 اقتباس
0 Hanan Fahad2 نشر 4 يونيو 2021 الكاتب أرسل تقرير نشر 4 يونيو 2021 طيب في migtation كيف اسوي الجداول عشان تفهم قاعده البيانات ان هذا الجدولين مفتاحين اساسيين كلهم يعني اذا واحد قلنا forign key طيب الاثنين مفتاحين اساسيين كيف اخليهم $table-> id يعطيني مفتاح واحد اساسي ابغا الاثنين مفاتيح اساسيه اقتباس
0 سامح أشرف نشر 4 يونيو 2021 أرسل تقرير نشر 4 يونيو 2021 بتاريخ 14 ساعات قال hanan fahad11: طيب في migtation كيف اسوي الجداول عشان تفهم قاعده البيانات ان هذا الجدولين مفتاحين اساسيين كلهم يعني اذا واحد قلنا forign key طيب الاثنين مفتاحين اساسيين كيف اخليهم $table-> id يعطيني مفتاح واحد اساسي ابغا الاثنين مفاتيح اساسيه يمكنك إستخدام التابع primary لعمل composite primary key $table->bigInteger('user_id')->unsigned(); $table->bigInteger('permission_id')->unsigned(); $table->primary(['user_id','permission_id']); اقتباس
السؤال
Hanan Fahad2
كيف اربط جدولين بلارافل في migration
بنوع حقل forign key
15 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.