Docs Menu
Docs Home
/ / /
Laravel MongoDB

라이브러리 버전 업그레이드

이 페이지의 내용

  • 개요
  • 업그레이드 방법
  • 호환성이 손상되는 변경
  • 버전 5.x 호환성이 손상되는 변경
  • 버전 4.x 호환성이 손상되는 변경

이 페이지에서는 Laravel MongoDB 를 새로운 주요 버전으로 업그레이드 학습 방법을 알아볼 수 있습니다. 이 페이지에는 해당되는 경우 기능 손실 없이 Laravel 통합 버전을 업그레이드 하기 위해 애플리케이션 에서 수행해야 하는 변경 사항도 포함되어 있습니다.

업그레이드하기 전에 다음 작업을 수행하세요:

  • 새 라이브러리 버전이 애플리케이션 이 연결되는 MongoDB Server 버전 및 애플리케이션 이 실행되는 Laravel 버전과 호환되는지 확인하세요. 이 정보는 호환성 페이지를 참조하세요.

  • 이 가이드 의 호환성이 손상되는변경 섹션에서 애플리케이션 에서 현재 사용 중인 Laravel 통합 버전과 계획된 업그레이드 버전 간의 호환성이 손상되는 변경을 해결하세요.

라이브러리 버전을 업그레이드하려면 애플리케이션 디렉토리에서 다음 명령을 실행합니다.

composer require mongodb/laravel-mongodb:5.1

라이브러리의 다른 버전으로 업그레이드하려면 laravel-mongodb: 뒤의 정보를 원하는 버전 번호로 바꾸세요.

호환성이 손상되는 호환성이 손상되는 변경 은 애플리케이션 이 예상대로 작동하지 않을 수 있는 특정 버전의 Laravel 통합 규칙 또는 동작의 수정입니다.

이 섹션의 호환성이 손상되는 변경은 이를 도입한 주요 버전 릴리스별로 분류됩니다. 라이브러리 버전을 업그레이드할 때 현재 버전과 업그레이드 예정 버전 간의 호환성이 손상되는 변경을 모두 해결합니다.

이 라이브러리 버전에는 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.

  • 쿼리 빌더는 결과를 배열이 아닌 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 객체 를 사용하는 경우 라이브러리는 DateTimeInterfaceMongoDB\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 컬렉션 에 액세스하기 위해 연결된 DBSchema 메서드도 수정됩니다. 다음 코드는 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);

이 라이브러리 버전에는 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.

  • 최소 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()

돌아가기

다음 단계