Laravel5のデータ管理クラス:Model、その中に豊富なデータ管理ファンクションを揃っています。最初はこれらのファンクションをどのように使用するかを少し戸惑いますが、やはりソースコードを読むのは最善の手段だと思います。但し、ファンクションの名前、引数の名前にいろいろ誤解しやすい部分あります。
例えば:updateOrCreate( array $attributes, array $values = [] )の引数が二つ配列があります: $attributes と $values。 言葉の意味から理解すると、データテーブルのフィールド名配列とそのフィールドにセットしたい値の配列と理解します

データ更新したいフィールド名の配列、そのフィールドにセットしたい値の配列を作成して、このファンクションを呼び出すとQueryExceptionが発生して、エラーとなります

実際にそのファンクションの説明( Create or update a record matching the attributes, and fill it with values)をよく読むと、$attributesがデータをマッチする配列、$valuesが他のセットしたいデータの配列とのことを分かりました。以下のように配列の内容を変えました
User::updateOrCreate(
['login_name' => $login_name ],
['department' => $department,
'last_login' => Carbon::now() ]
) ;
今度は、指定したlogin_nameでテーブルにデータがあるかどうかをチェックして、データの新規作成または更新を行いました。
はやり、ファンクション名、引数名などの名付けは非常に重要で、誤解しないように工夫しなければならないと感じました。