Laravel5でsave()できない問題

ちょっと古い記事ですが、Laravelでマイグレーション後にモデル作成してもデータが登録ができないというのがあって私のハマりどころとかなり似ているなという感じだったのですが、私の場合エラーも出なかったので、かなり苦戦しました。

初期化してみる

値をDBに登録する際に、取得したオブジェクトに値を入れて$xxx->save();で保存するだけですが全然インサートされず、おまけにエラーにすらならないということなので、とりあえずすべて初期化してみました。
マイグレーションで作成したテーブルをDBから削除。
まずはmigrationsテーブルの内容を削除(すでに運用中だったらこれはなかなか出来ないかもですが。。)それから、migrationsファイルをデフォルトのものだけ残して削除。(以下だけ残す)

database/migrations/2014_10_12_000000_create_users_table.php
database/migrations/2014_10_12_100000_create_password_resets_table.php

モデルファイルもいったん削除

app/MODELE_NAME.php

これできれいになっている筈なので、ここからはじめます。

dump-autoload

とりあえずはこれかと。

php composer.phar dump-autoload
Generating optimized autoload files

難なく終了。

migrate

最初のマイグレーションをやってみます。手順としてはこれをもう一回やる感じになります。

php artisan migrate 
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table

デフォルトなので難なく終了。users,password_resetsの両テーブルも正常に作成されているし、migrationsテーブルにもマイグレーションの履歴が残ってます。ここまでは正常に動いている感じ。

もう一回最初からやる

モデル作成とマイグレーションを両方やる。

php artisan make:model XxxXxx --migration
Model created successfully.
Created Migration: 2017_05_08_003141_create_xxx_xxxs_table

プロンプトが終了するまでやたらと時間がかかったのだけどこれでよいのでしょうか。
モデルファイルとマイグレーションファイルは正常に生成されたようです。次にマイグレーションファイルに追加事項を記入してテーブル作成します。

php artisan migrate
Migrating: 2017_05_08_003141_create_xxx_xxxs_table
Migrated:  2017_05_08_003141_create_xxx_xxxs_table

やたらと時間がかかったけど、これも無事終了。migrationsテーブルにも履歴が格納されました。テーブルも問題なく作成されています。

コントローラからモデルへアクセス

モデルをnewしてオブジェクトを取得してみます。

use App\XxxXxx;
....
$obj = new XxxXxx;
var_dump($obj);

これも問題なさそう。
最後に問題のsave()をやってみます。できました。理由がよくわかりませんでした。

Last update: 2017.05.10 (水)