Amir Alsaeed نشر 16 مارس 2021 أرسل تقرير نشر 16 مارس 2021 أرغب في دمج أكثر من قاعدة بيانات في مشروع لارافيل، بحيث يمكنني الوصول إلى البيانات الموجودة في قاعدتين أو أكثر بدلاً من قاعدة بيانات واحدة فقط. فهل هنالك طريقة تمكنني من استخدام أكثر من قاعدة بيانات واحدة في لارافيل؟ وكيف يمكنني التبديل بين القاعدين ضمن المتحكمات controllers ؟ اقتباس
0 بلال زيادة نشر 16 مارس 2021 أرسل تقرير نشر 16 مارس 2021 يمكنك ذلك من خلال وضع الأكواد التالية في ملف .env DB_CONNECTION_SECOND=mysql DB_HOST_SECOND=127.0.0.1 DB_PORT_SECOND=3306 DB_DATABASE_SECOND=database2 DB_USERNAME_SECOND=root DB_PASSWORD_SECOND= فلاحظ جيدا اننا قمنا بتعريف متغيرات لقاعدة بيانات أخرى, ثم في مسار config/database.php نقوم بوضع 'mysql2' => [ 'driver' => env('DB_CONNECTION_SECOND'), 'host' => env('DB_HOST_SECOND'), 'port' => env('DB_PORT_SECOND'), 'database' => env('DB_DATABASE_SECOND'), 'username' => env('DB_USERNAME_SECOND'), 'password' => env('DB_PASSWORD_SECOND'), ], تحت mysql بحيث يكون هذا يكون معلومات الاتصال بقاعدة البيانات الأخرى. يمكنك صنع جدول لقاعدة البيانات عبر Schema بحيث نعرف Schema::connection لقاعدة البيانات الأخرى مثل Schema::connection('mysql2')->create('users_two', function($table) { $table->increments('id'): }); يمكنك استخدام Query Builder بهذا الشكل $posts = DB::connection('mysql2')->select(); ايضا يمكنك توجيه Model إلى استخدام قاعدة الاتصال الثاني الخاص بقاعدة البيانات الثانية باستخدام protected $connection = 'mysql2'; ايضا يمكنك في Controller استخدام الشكل التالي : public function index() { $post = new Post; $post->setConnection('mysql2'); $something = $post->find(1); $get_posts = Post::on('mysql2')->find(1); return $get_posts; } 1 اقتباس
0 Sam Ahw نشر 16 مارس 2021 أرسل تقرير نشر 16 مارس 2021 إن كل اتصال مع قاعدة بيانات في لارافيل يلزمه الخصائص التالية ضمن ملف .env: DB_CONNECTION=mysql نوع قاعدة البيانات DB_HOST=127.0.0.1 المضيف إما محلي أو خادم خارجي DB_PORT=3306 المنفذ DB_DATABASE=database1 اسم قاعدة البيانات DB_USERNAME=root اسم المتسخدم DB_PASSWORD=pass كلمة المرور ولذلك يمكن تكرارها عند كل تعريف لقاعدة بيانات. أما بالنسبة لاستخدام الاتصال فبالإضافة لما تم شرحه في التعليق السابق، يمكنك عن طريق Eloquent المقدّمة من لارافيل تعريف الاتصال، فمثلاً في حال وجود model ترغب باستخدامه دائماً مع اتصال محدد أو قاعدة بيانات محددة، فلا داعي لتكرار ذكر عملية الاتصال في كل مرة ستقوم باستخدامه، يكفي وضع $connection في Eloquent ضمن المودل الخاص بك وذلك سيضمن إبقاء الاتصال نفسه، كالتالي: class SomeModel extends Eloquent { protected $connection = 'mysql2'; } 1 اقتباس
السؤال
Amir Alsaeed
أرغب في دمج أكثر من قاعدة بيانات في مشروع لارافيل، بحيث يمكنني الوصول إلى البيانات الموجودة في قاعدتين أو أكثر بدلاً من قاعدة بيانات واحدة فقط.
فهل هنالك طريقة تمكنني من استخدام أكثر من قاعدة بيانات واحدة في لارافيل؟ وكيف يمكنني التبديل بين القاعدين ضمن المتحكمات controllers ؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.