Laravel 8에서 여러 데이터베이스 사용하기
Laravel에서 다중 데이터베이스를 사용하려면 Database Configuration , set ENV Variables , create Migrations , Eloquent Model , Controller 및 Routes 을 만들어야 합니다. 아래에 제공된 단계를 따르십시오.
**참고: **라라벨 8을 설치하지 않았다면 이 튜토리얼Install Laravel 8을 읽어보세요.
1단계 – Laravel 8에서 데이터베이스에 대한 구성 생성
여기서는 MYSQL 데이터베이스에 대한 구성을 생성합니다. config 디렉토리에서 database.php 파일을 열어야 합니다. 연결 배열 내부에는 기본적으로 첫 번째 데이터베이스에 대한 mysql 키가 있습니다. 두 번째 데이터베이스에 대해 mysql2 키를 하나 더 만들고 아래에 제공된 코드를 붙여넣으면 됩니다.
'mysql2' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST2', '127.0.0.1'),
'port' => env('DB_PORT2', '3306'),
'database' => env('DB_DATABASE2', 'forge'),
'username' => env('DB_USERNAME2', 'forge'),
'password' => env('DB_PASSWORD2', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
2단계 – Laravel 8에서 환경 변수 설정
.env 파일을 열고 코드에서 아래와 같이 데이터베이스 자격 증명을 설정합니다. DB_HOST2, DB_PORT2, DB_DATABASE2, DB_USERNAME2, DB_PASSWORD2는 두 번째 데이터베이스용입니다.
#First Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveldb1
DB_USERNAME=root
DB_PASSWORD=
#Second Database
DB_HOST2=127.0.0.1
DB_PORT2=3306
DB_DATABASE2=laraveldb2
DB_USERNAME2=root
DB_PASSWORD2=
3단계 – Laravel 8에서 Eloquent 모델 만들기
모델을 만들기 전에 두 개의 샘플 데이터베이스 테이블을 만듭니다.
데이터베이스(laraveldb1)에서 id, customer_name, customer_email, created_at, updated_at, deleted_at 필드가 있는 테이블(Customers)을 생성합니다.
데이터베이스(laraveldb2)에서 id, staff_name, staff_email, created_at, updated_at, deleted_at 필드가 있는 테이블(Staff)을 생성합니다.
app\Models 디렉토리 안에 Customer.php 파일을 생성하고 아래에 주어진 코드를 붙여넣습니다.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
use HasFactory;
protected $table = 'customers';
protected $connection = 'mysql';
}
다시 app\Models 디렉토리 안에 Staff.php 파일을 만들고 아래에 주어진 코드를 붙여넣습니다.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Staff extends Model
{
use HasFactory;
protected $table = 'staff';
protected $connection = 'mysql2';
}
Customer 및 Staff 모델 모두에서 모델 속성$table을 사용하여 테이블 이름을 정의하고 $connection 1단계에서 생성한 연결을 정의했습니다.
4단계 – Laravel 8에서 컨트롤러 생성
먼저, app\Http\Controllers 디렉토리 안에 CustomerController.php 파일을 생성하고 아래 주어진 코드를 붙여넣습니다.
<?php
namespace App\Http\Controllers;
use App\Models\Customer;
use Illuminate\Http\Request;
class CustomerController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$customer = new Customer;
$customer->customer_name = 'Customer 1';
$customer->customer_email = '[email protected]';
if ($customer->save()) {
return response()->json(['message' => 'Customer Added.']);
}
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\Customer $customer
* @return \Illuminate\Http\Response
*/
public function show(Customer $customer)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Customer $customer
* @return \Illuminate\Http\Response
*/
public function edit(Customer $customer)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Customer $customer
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Customer $customer)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Customer $customer
* @return \Illuminate\Http\Response
*/
public function destroy(Customer $customer)
{
//
}
}
생성 방법에서 우리는 고객 모델을 사용하여 고객 테이블에 데이터를 삽입했습니다. database queries using Eloquent Model 에 대해 읽을 수 있습니다.
이제 app\Http\Controllers 디렉토리 안에 StaffController.php 파일을 만들고 아래 코드를 붙여넣으세요.
<?php
namespace App\Http\Controllers;
use App\Models\Staff;
use Illuminate\Http\Request;
class StaffController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$staff = new Staff;
$staff->staff_name = 'Staff 1';
$staff->staff_email = '[email protected]';
if ($staff->save()) {
return response()->json(['message' => 'Staff Added']);
}
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\Staff $staff
* @return \Illuminate\Http\Response
*/
public function show(Staff $staff)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Staff $staff
* @return \Illuminate\Http\Response
*/
public function edit(Staff $staff)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Staff $staff
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Staff $staff)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Staff $staff
* @return \Illuminate\Http\Response
*/
public function destroy(Staff $staff)
{
//
}
}
마찬가지로 create 메소드에서 Staff 모델을 사용하여 직원 테이블에 데이터를 삽입했습니다. database queries using Eloquent Model 에 대해서도 읽을 수 있습니다.
5단계 – Laravel 8에서 리소스 경로 생성
route 디렉토리 내에서 web.php 파일을 열고 아래 주어진 코드를 붙여넣습니다.
use App\Http\Controllers\CustomerController;
use App\Http\Controllers\StaffController;
Route::resource('customers', CustomerController::class);
Route::resource('staffs', StaffController::class);
이제 모든 Laravel 애플리케이션에서 다중 데이터베이스를 사용할 수 있습니다. 이제 컨트롤러가 포함된 Laravel 8 다중 데이터베이스 및 리소스 경로를 사용하여 Laravel 애플리케이션의 속도를 높이고 단순화할 수도 있습니다.
좋아요, 공유 및 긍정적 인 피드백을 제공하여 더 많은 글을 쓸 수 있도록 동기를 부여하십시오.
더 많은 튜토리얼을 보려면visit my website .
감사:)
행복한 코딩 :)
Reference
이 문제에 관하여(Laravel 8에서 여러 데이터베이스 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/readymadecode/using-multiple-databases-in-laravel-8-1498텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)