問題

私はテーブルを探して、 "name"という名前の列が存在するかどうかを確認しようとしています。値を返し、null値でその行を作成しない場合はfirstOrCreateを見ましたが、私の人生のためにそれを使用する方法を理解できません。

これは私が現在持っているものです、誰かが手を貸すことができますか?

  class Settings extends Eloquent
        {
            protected $table = 'settings';
            protected $primaryKey = 'name';

            public static function get($settingName)
                {
                    return self::firstOrCreate(array('name' => $settingName));
//                    return self::select(array('value'))->where('name', '=', $settingName)->first()->value;
                }
        }
 

  ベストアンサー

create()メソッドは大量割り当てを行い、これは大きなセキュリティ上の問題なので、Laravelはそれに対する保護を持っています。内部的には = ['*'] を保護しているため、すべての列は大量割り当てに対して保護されます。いくつかの選択肢があります:

モデルの fillable カラムを設定します。

 class User extends Eloquent {

    protected $fillable = array('first_name', 'last_name', 'email');

}
 

または、保護したいものだけを設定します。

 class User extends Eloquent {

    protected $guarded = array('password');

}
 

あなた自身のリスクでも、

 class User extends Eloquent {

    protected $guarded = array();

}
 

すべては守られない

ドキュメントを見てください: http://laravel.com/docs/eloquent#mass-assignment

また、あなたのFacadeを使ってそれを呼び出すこともできます:

  class Settings extends Eloquent
 {
        protected $table = 'settings';
        protected $primaryKey = 'name';

        public static function get($settingName)
        {
            return Settings::firstOrCreate(array('name' => $settingName));
        }
 }
 

  同じタグがついた質問を見る

laravellaravel-4eloquent