라이브러리 버전 업그레이드
개요
이 페이지에서는 Laravel MongoDB 를 새로운 주요 버전으로 업그레이드 학습 방법을 알아볼 수 있습니다. 이 페이지에는 해당되는 경우 기능 손실 없이 Laravel 통합 버전을 업그레이드 하기 위해 애플리케이션 에서 수행해야 하는 변경 사항도 포함되어 있습니다.
업그레이드 방법
업그레이드하기 전에 다음 작업을 수행하세요:
새 라이브러리 버전이 애플리케이션 이 연결되는 MongoDB Server 버전 및 애플리케이션 이 실행되는 Laravel 버전과 호환되는지 확인하세요. 이 정보는 호환성 페이지를 참조하세요.
이 가이드 의 호환성이 손상되는 변경 섹션에서 애플리케이션 에서 현재 사용 중인 Laravel 통합 버전과 업그레이드 예정 버전 간의 호환성이 손상되는 변경을 해결하세요.
라이브러리 버전을 업그레이드하려면 애플리케이션 디렉토리에서 다음 명령을 실행합니다.
composer require mongodb/laravel-mongodb:5.2
다른 버전의 라이브러리로 업그레이드 하려면 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)
은 변경 사항을 유지하지 않습니다. Ensure that you follow all calls toModel::unset($field)
withModel::save()
.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()