چطوری به دو دیتابیس وصل بشم
من دارم لاراول یاد می گیرم.الان یه سوال برام پیش اومده.برای وصل شدن به دیتابیس می رم تو فایل database.php و پارامترهای اتصال رو در قسمت mysql انجام میدم و وصل میشم.حالا اگر بخوام تو برنامه م با بیشتر از یک دیتابیس کار کنم چیکار باید بکنم؟
سوال دوم اینکه برای کوئری های تو در تو چیکار کنم.مثال
select name from users where city in (select city from provinces where id = 10)
این کوئری رو چطوری با query builder بنویسم؟
نقل قول: چطوری به دو دیتابیس وصل بشم
تو همون فایل database.php میتونید هرچند تا کانکشن در بخش connections ایجاد کنید و یکی رو در بخش default قرار میدین که به طور پیش فرض تمام کوئری هاتون با اون صورت میگیره اما برای اینکه به یکی دیگه دسترسی پیدا کنید کافیه به این صورت عمل کنید (مثلا اسم کانکشن اون دیتابیس foo گزاشتیم)
DB::connection('foo')->select(...);
و اما برای سوال دوم میتونید به این صورت عمل کنید (ساده ترین راهش اینه ولی میتونید با سرچ کردن در گوگل روشهای بهتر هم ببینید)
$users = DB::select(
'select name from users where city in (select city from provinces where id = :id)',
['id' => 10]
)->get();
نقل قول: چطوری به دو دیتابیس وصل بشم
نقل قول:
نوشته شده توسط
hamedarian2009
تو همون فایل database.php میتونید هرچند تا کانکشن در بخش connections ایجاد کنید و یکی رو در بخش default قرار میدین که به طور پیش فرض تمام کوئری هاتون با اون صورت میگیره اما برای اینکه به یکی دیگه دسترسی پیدا کنید کافیه به این صورت عمل کنید (مثلا اسم کانکشن اون دیتابیس foo گزاشتیم)
DB::connection('foo')->select(...);
و اما برای سوال دوم میتونید به این صورت عمل کنید (ساده ترین راهش اینه ولی میتونید با سرچ کردن در گوگل روشهای بهتر هم ببینید)
$users = DB::select(
'select name from users where city in (select city from provinces where id = :id)',
['id' => 10]
)->get();
میشه از ساختن کانکشن یه مثال بزنید
الان تو فایل database.php برای قسمت mysql همچین چیزی دارم
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
چطوری می تونم اسم بذارم روش که معلوم بشه اینا با هم فرق دارن؟
ممنون
نقل قول: چطوری به دو دیتابیس وصل بشم
یکی دیگه مثل همون با یک اسم دیگه اضافه کنید
'mysql2' => [
'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ],
و بعد اینجوری دسترسی دارید دیگه
DB::connection('mysql2')