【Laravel】 마이그레이션 파일로부터 mongoDB의 컬렉션을 만들 수 없었을 때의 대처
소개
제목대로입니다. Laravel의 마이그레이션 파일에서 mongoDB의 컬렉션을 만들려고했는데 생성되지 않았기 때문에 그 때의 대처 방법을 비망록으로 남기려고 생각합니다.
 환경
또 하나 DB로서 postgreSQL도 사용하고 있었습니다만, 이번 기사에서는 특별히 기술하지 않습니다.
문제
예를 들어 다음과 같은 마이그레이션 파일을 만들고 php artisan migrate 명령을 실행해 보면 컬렉션이 생성되지 않습니다. 
※ config/database.php에는 MongoDB에 대한 정보가 포함되어 있습니다.
class Sample extends Migration
{
    // MongoDBのコネクションを指定します
    protected $connection = 'mongodb';
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::connection($this->connection)
            ->table('Sample', function (Blueprint $collection)
            {
                $collection->string('name');
            });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::connection($this->connection)
            ->table('Sample', function (Blueprint $collection)
            {
                $collection->drop();
            });
    }
}
이것으로 Sample 컬렉션이 완성된다고 생각했습니다만, 몇번 확인해도 컬렉션이 보이지 않습니다.
 대처
up 메소드의 컬럼 기술의 곳이 좋지 않은 것 같습니다. index를 붙이는 것 같은 기술로 하면 좋은 것 같습니다.
왜 index가 아니면 안되는지 모르겠습니다만・・・
--- $collection->string('name');
+++ $collection->index('name');
이 코드는 생성된 컬렉션의 _id 및 name에 인덱스를 붙입니다. _id 에는 디폴트로 붙는 것 같네요.
여기서, 「디폴트로 붙는다면 컬럼 정의의 개소 몰래 필요없다」라고 생각해 삭제해 마이그레이션 하면 컬렉션은 생성되지 않았습니다. 닌데 ...
_id 에만 index를 붙이는 경우는 아래와 같이 확실히 명기하지 않으면 안되는 것 같습니다.
$collection->index('_id');
 요약
색인을 사용하여 작성하는 것이 좋습니다.
그 밖에 뭔가 좋은 해결책 아시는 분 있으시면 가르쳐 주세요. 
Laravel에서 MongoDB를 만지기 시작했기 때문에 이것을 해결하는 데 상당히 시간이 걸렸습니다.
하지만 왜 index가 아니면 안되겠지・・・. 나, 궁금해!
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(【Laravel】 마이그레이션 파일로부터 mongoDB의 컬렉션을 만들 수 없었을 때의 대처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/hirorin/items/be2b84ef80b9ea8998bf
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
class Sample extends Migration
{
    // MongoDBのコネクションを指定します
    protected $connection = 'mongodb';
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::connection($this->connection)
            ->table('Sample', function (Blueprint $collection)
            {
                $collection->string('name');
            });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::connection($this->connection)
            ->table('Sample', function (Blueprint $collection)
            {
                $collection->drop();
            });
    }
}
up 메소드의 컬럼 기술의 곳이 좋지 않은 것 같습니다. index를 붙이는 것 같은 기술로 하면 좋은 것 같습니다.
왜 index가 아니면 안되는지 모르겠습니다만・・・
--- $collection->string('name');
+++ $collection->index('name');
이 코드는 생성된 컬렉션의
_id 및 name에 인덱스를 붙입니다. _id 에는 디폴트로 붙는 것 같네요.여기서, 「디폴트로 붙는다면 컬럼 정의의 개소 몰래 필요없다」라고 생각해 삭제해 마이그레이션 하면 컬렉션은 생성되지 않았습니다. 닌데 ...
_id 에만 index를 붙이는 경우는 아래와 같이 확실히 명기하지 않으면 안되는 것 같습니다.$collection->index('_id');
요약
색인을 사용하여 작성하는 것이 좋습니다.
그 밖에 뭔가 좋은 해결책 아시는 분 있으시면 가르쳐 주세요. 
Laravel에서 MongoDB를 만지기 시작했기 때문에 이것을 해결하는 데 상당히 시간이 걸렸습니다.
하지만 왜 index가 아니면 안되겠지・・・. 나, 궁금해!
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(【Laravel】 마이그레이션 파일로부터 mongoDB의 컬렉션을 만들 수 없었을 때의 대처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/hirorin/items/be2b84ef80b9ea8998bf
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
Reference
이 문제에 관하여(【Laravel】 마이그레이션 파일로부터 mongoDB의 컬렉션을 만들 수 없었을 때의 대처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hirorin/items/be2b84ef80b9ea8998bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)