Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 86

Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 105

laravelでのupdateOrCreateメソッド

2018年9月24日laravel, mysql, PHP, インフラ, データベース, フレムワーク, 開発


Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 86

Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 105
laravelで使われているファザードについて調べてみた
laravel クエリビルダについて調べてみた
laravelでのupdateOrCreateメソッド
laravel でのconfigからパラメータ取得
php artisanコマンドについてまとめてみた
laravel 導入時に躓いた点
laravel 5.6でログインページがみれない(2)
laravel 5.6でログインページがみれない(1)

updateOrCreate()メソッド

laravelで提供されている”updateOrCreate()”メソッドを今回使ったので、紹介したいと思います。laravelからデータベースのテーブルにデータを追加したいときに、ユニークキーに設定しているカラムがあり、データの内容に修正があったときに、再度インサート文を流してしまうと、エラーが発生してしまいます。そこで、指定したカラムのパラメータが既に存在しており、別のカラムのパラメータを変更したいときは、update文を実行し、それ以外のときにinsert文を実行するというlaravelの便利な関数が存在しました。

updateOrCreate()の使い方

第1引数:一致したかどうかの判定を行いたい変数(連想配列の形式)
第2引数:insertまたはupdateしたいデータを持つ変数(連想配列の形式)

updateOrCreate(['id'=>$id],['id'=>$id,
                            'name'=>$name]);

初めは、引数を一つだけしか設定していなかったので、重複していてもinsert文が実行されてしまい、エラーが表示されてしまい、躓いてしまいました。引数を追加したところ、適切にupdate文が使われているようで、エラーが解消されました。