2017-01-15 5 views
2

私は検証を行い、モデルを作成して保存する保存メソッドを持っています。後でsaveメソッドでモデルのIDにアクセスしようとしましたが、NULLです。保存後のLaravelモデルIDヌル(IDが増加しています)

スキーマ:

public function up() 
{ 
    Schema::create('posts', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title'); 
     $table->string('body'); 
     //and other fields that aren't important right now 
     $table->timestamps(); 
    }); 
} 

保存方法:

IDは(符号なし整数をインクリメントするだけで自動)に設定されているMySQLでは
public function savePost(Request $request) { 

    $this->validate($request, [ 
     //some validation happens here 
    ]); 

    $post = new Post(); 
    $title = $request->input('title'); 
    $body = $request->input('body'); 

    $post->title = $title; 
    $post->body = $body; 

    $post->save(); 

    //I later try to access the $post->id here and it's still NULL. 
    var_dump($post->id);//NULL 
} 

- savePost方法があるの後に、それが設定されますように思えますコンプリート。

私は$post->save()が完了した後、モデルのIDが設定されると思っていましたが、そうではないようです。私はsave()と同じ方法でモデルのIDにアクセスできますか?それとも私はどこかでミスをしたことがありますか?ただ明確にする:(PKをインクリメントオート含む)モデルは、MySQLに格納されている、私はちょうど同じでモデルのidにアクセスすることはできませんよ

Laravelフレームワークのバージョンは5.3.26

編集です私がそれを保存する方法。

答えて

4

はそれを考え出した:

をunsigned int型をインクリメントautoに文字列PKから切り替えたとき、私は、この問題に遭遇しました。

public $incrementing = false;モデルではまだPostでしたが、この問題について説明しています。 $incrementing = trueに切り替えると問題が解決しました。

+1

ありがとうございました@クリス、私はいくつかの頭を傷つけて保存! –

+1

ありがとうございました、これは確かにヘッドスクラッチャーでした –

関連する問題