라이브러리 버전 업그레이드
개요
이 페이지에서는 Laravel MongoDB 를 새로운 주요 버전으로 업그레이드 학습 방법을 알아볼 수 있습니다. 이 페이지에는 해당되는 경우 기능 손실 없이 Laravel 통합 버전을 업그레이드 하기 위해 애플리케이션 에서 수행해야 하는 변경 사항도 포함되어 있습니다.
업그레이드 방법
업그레이드하기 전에 다음 작업을 수행하세요:
새 라이브러리 버전이 애플리케이션 이 연결되는 MongoDB Server 버전 및 애플리케이션 이 실행되는 Laravel 버전과 호환되는지 확인하세요. 이 정보는 호환성 페이지를 참조하세요.
이 가이드 의 호환성이 손상되는변경 섹션에서 애플리케이션 에서 현재 사용 중인 Laravel 통합 버전과 계획된 업그레이드 버전 간의 호환성이 손상되는 변경을 해결하세요.
라이브러리 버전을 업그레이드하려면 애플리케이션 디렉토리에서 다음 명령을 실행합니다.
composer require mongodb/laravel-mongodb:5.1
라이브러리의 다른 버전으로 업그레이드하려면 laravel-mongodb:
뒤의 정보를 원하는 버전 번호로 바꾸세요.
호환성이 손상되는 변경
호환성이 손상되는 호환성이 손상되는 변경 은 애플리케이션 이 예상대로 작동하지 않을 수 있는 특정 버전의 Laravel 통합 규칙 또는 동작의 수정입니다.
이 섹션의 호환성이 손상되는 변경은 이를 도입한 주요 버전 릴리스별로 분류됩니다. 라이브러리 버전을 업그레이드할 때 현재 버전과 업그레이드 예정 버전 간의 호환성이 손상되는 변경을 모두 해결합니다.
버전 5.x 호환성이 손상되는 변경
이 라이브러리 버전에는 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.
쿼리 빌더는 결과를 배열이 아닌
stdClass
객체로 반환합니다. 이 변경 사항을 적용하려면 쿼리 결과와 상호 작용할 때 속성 액세스 에 대한 배열 액세스 를 변경해야 합니다.다음 코드는 v5.0 과 비교하여 이전 버전에서 쿼리 결과를 조회 하고 결과 객체 의 속성 에 액세스 하는 방법을 보여줍니다.
$document = DB::table('accounts') ->where('name', 'Anita Charles') ->first(); // older versions $document['balance']; // v5.0 $document->balance; 다음 클래스에 대한 지원 을 제거합니다.
MongoDB\Laravel\Auth\DatabaseTokenRepository
. 대신 기본값Illuminate\Queue\Failed\DatabaseFailedJobProvider
클래스를 사용하고 MongoDB 에 대한 연결을 지정합니다.MongoDB\Laravel\Queue\Failed\MongoFailedJobProvider
. 대신 기본값Illuminate\Queue\Failed\DatabaseFailedJobProvider
클래스를 사용하고 MongoDB 에 대한 연결을 지정합니다.
쿼리 에서
Carbon
를 포함한DateTimeInterface
객체 를 사용하는 경우 라이브러리는DateTimeInterface
를MongoDB\BSON\UTCDateTime
객체 로 변환합니다. 이 변환은where()
메서드에 쿼리 필터로 전달되거나insert()
및update()
메서드에 데이터로 전달된DateTimeInterface
객체에 적용됩니다.Carbon
객체 를DB::where()
메서드에 전달하는 예시 를 보려면 쿼리 빌더 가이드 의 날짜 일치 예시 섹션을 참조하세요.쿼리 결과에서 라이브러리는 기본값 시간대를 적용하여 BSON
UTCDateTime
객체를Carbon
날짜 클래스로 변환합니다.v5.1 에서 라이브러리는 모델 인스턴스 를 수화하기 전에
Model::raw()
메서드 결과로의 변환도 수행합니다.id
MongoDB 문서에서_id
필드 의 별칭이며, 라이브러리는 데이터를 쿼리할 때id
와(과)_id
사이를 자동으로 변환합니다. 쿼리 결과 객체 에는 문서의_id
필드 를 나타내는id
필드 가 포함되어 있습니다. 이 동작으로 인해 문서에 두 개의 개별id
및_id
필드를 가질 수 없습니다.v5.1 에서 라이브러리는 모델 인스턴스 를 수화하기 전에
Model::raw()
메서드 결과로의 변환도 수행합니다. 복잡한 쿼리 필터하다 를 전달할 때는Model::raw()
대신DB::where()
메서드를 사용합니다.$collection
속성 에 대한 지원 을 제거합니다. 다음 코드는 v5.0 과 비교하여 이전 버전에서User
클래스의 변수에 MongoDB 컬렉션 을 할당하는 방법을 보여줍니다.use MongoDB\Laravel\Eloquent\Model; class User extends Model { protected $keyType = 'string'; // older versions protected $collection = 'app_user'; // v5.0 protected $table = 'app_user'; ... } 이 출시하다 에서는 MongoDB 컬렉션 에 액세스하기 위해 연결된
DB
및Schema
메서드도 수정됩니다. 다음 코드는 v5.0 과 비교하여 이전 버전에서app_user
컬렉션 에 액세스 하는 방법을 보여줍니다.use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\DB; use MongoDB\Laravel\Schema\Blueprint; // older versions Schema::collection('app_user', function (Blueprint $collection) { ... }); DB::collection('app_user')->find($id); // v5.0 Schema::table('app_user', function (Blueprint $table) { ... }); DB::table('app_user')->find($id);
버전 4.x 호환성이 손상되는 변경
이 라이브러리 버전에는 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.
최소 Laravel 버전은 이제 10.0 입니다. Laravel 버전 업그레이드에 대한 지침은 Laravel 설명서의 업그레이드 가이드 를 참조하세요.
이제 종속성 이름은
"mongodb/laravel-mongodb"
입니다.composer.json
파일의 종속성 이름이"mongodb/laravel-mongodb": "^4.0"
인지 확인합니다. 그런 다음composer update
을(를) 실행합니다.네임스페이스는 이제
MongoDB\Laravel\
입니다. 모델 및 구성 파일에서 네임스페이스를Jenssegers\Mongodb\
에서MongoDB\Laravel\
로 변경해야 합니다.Laravel이 아닌 프로젝트에 대한 지원을 제거합니다.
$dates
속성에 대한 지원을 제거합니다. 모델 파일에서$dates
의 모든 인스턴스를$casts
로 변경했는지 확인합니다.Model::unset($field)
변경 사항을 유지하지 않습니다.Model::save()
을 사용하여Model::unset($field)
에 대한 모든 호출을 따라야 합니다.Query\Builder::whereAll($column, $values)
메서드를 제거합니다. 로 바꿔야Query\Builder::whereAll($column, $values)
합니다.Query\Builder::where($column, 'all', $values)
Query\Builder::delete()
하나 또는 모든 문서를 삭제할 수 있습니다. 또는 값만 에 전달해야1
합니다.null
limit()
whereDate()
,whereDay()
,whereMonth()
,whereYear()
및whereTime()
메서드는 이제 날짜 필드에 MongoDB 연산자를 사용합니다.MongoDB\Laravel\Eloquent\MassPrunable
트레이트를 추가합니다. 모델에서Illuminate\Database\Eloquent\MassPrunable
의 모든 인스턴스를MongoDB\Laravel\Eloquent\MassPrunable
(으)로 바꿔야 합니다.다음
Query\Builder
메서드에 대한 지원을 제거합니다.toSql()
toRawSql()
whereColumn()
whereFullText()
groupByRaw()
orderByRaw()
unionAll()
union()
having()
havingRaw()
havingBetween()
whereIntegerInRaw()
orWhereIntegerInRaw()
whereIntegerNotInRaw()
orWhereIntegerNotInRaw()