2016-04-19 6 views
0

firstOrCreateを使用すると、データベースに設定したモデルのデフォルト値が与えられます。しかし、firstOrNewを使用した場合、値は与えられず、代わりにNULLとして出力されます。 firstOrCreateを使用する以外にこれを修正する方法はありますか?それは、データベースから結果を取得していないときfirstOrNewは自分のモデルの新しいインスタンスを作成しますので、Laravelで `firstOrNew`のデフォルトのMySql値を取得する方法は?

答えて

1

です。したがって、データベースからデフォルト値を取得することはありません。

ここには少なくとも2つのオプションがあります。最初の1つはfirstOrCreateを使用して既に言及したものです(データベースの状態が正しくない可能性があるため、これは私が推奨するものではありません)。別のオプションは、 'アクセサon your model with which will return either the value retrieved from the database or when it's null'を追加することです。これは、定義したデフォルト値を返します。アクセサの

public function getMyFieldAttribute($myField) 
{ 
    if ($myField === null) { 
     return 'my-default-value'; 
    } 

    return $myField; 
} 

詳細情報は、マニュアルに記載されています:https://laravel.com/docs/5.2/eloquent-mutators#accessors-and-mutators素晴らしいアイデアだ

+0

!ありがとう。 :D – Pat

関連する問題