PDA

View Full Version : چطوری به دو دیتابیس وصل بشم



HttpRequest
پنج شنبه 06 خرداد 1395, 14:54 عصر
من دارم لاراول یاد می گیرم.الان یه سوال برام پیش اومده.برای وصل شدن به دیتابیس می رم تو فایل database.php و پارامترهای اتصال رو در قسمت mysql انجام میدم و وصل میشم.حالا اگر بخوام تو برنامه م با بیشتر از یک دیتابیس کار کنم چیکار باید بکنم؟

سوال دوم اینکه برای کوئری های تو در تو چیکار کنم.مثال
select name from users where city in (select city from provinces where id = 10)

این کوئری رو چطوری با query builder بنویسم؟

hamedarian2009
جمعه 07 خرداد 1395, 00:13 صبح
تو همون فایل 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();

HttpRequest
جمعه 07 خرداد 1395, 19:50 عصر
تو همون فایل 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,
],


چطوری می تونم اسم بذارم روش که معلوم بشه اینا با هم فرق دارن؟
ممنون

hamedarian2009
شنبه 08 خرداد 1395, 09:55 صبح
یکی دیگه مثل همون با یک اسم دیگه اضافه کنید



'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')