יש לי פרויקט שבו לכל יוזר יש דאטאבייס משלו.
עכשיו, תוך כדי ריצה, אני צריך להתחבר לדאטאבייס הנכון.
הפרויקט הוא על Laravel ( כיום 5).
אז השלב הראשון לפתרון העניין, הוא הוספה דינמית של הגדרה.
כלומר – כידוע, בדרך כלל ההגדרות של הדאטאבייסים ב-Laravel יושבות במערך שמוגדר בקובץ database.php בתיקית config.
עכשיו, כיוון שזאת הגדרה לכל דבר ועניין, אז laravel מאפשרת להוסיף הגדרות דינמיות , באמצעות המתודה Config::set.
אז ככה אני מגדיר דאטאבייס חדש , מה שנקרא "on the fly", כלומר תוך כדי ריצה :
Config::set('database.connections.'.'YOUR KEY COME HERE', array(
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => $this->dbName,
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'YOUR PASSWORD COME HERE'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
));
נא תשומת לב למספר נקודות :
1. השתמשתי ב-dot.notation, כלומר בתחביר של נקודה מפרידה, ו-Laravel יודעת להפריד אותו לבד.
2. המקום שבו סימנתי Your key come here – מיועד כמובן, כדי לתת שם יחודי ל-Connection הזה.
ועכשיו, אחרי שהגדרנו –
אז נשאר לבצע שאילתות.
אני אדגים על שאילתא בצורה גולמית, בלי להתייחס במאמר הזה ל-Eloquoent בינתיים.
אז נניח ואני רוצה לבצע שאילתת select על טבלת users באותו דאטאבייס שאליו התחברתי :
זה הולך ככה :
$results = DB::connection($user->id)->select('select * from users where id > ?', [0]);
זהו, ראינו כאן איך להתחבר באופן דינמי לדאטאבייסים ב-laravel.
יום נעים
איל