7

「名前」という名前の列が存在するかどうかを確認するためにテーブルを検索しようとしています。存在する場合は値を返します。そうでない場合は、null 値でその行を作成します.

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

 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;
                }
        }
4

1 に答える 1

10

create() メソッドは一括代入を行いますが、これはセキュリティ上の大きな問題であるため、Laravel はそれに対する保護を備えています。内部的に = ['*'] が保護されているため、すべての列が一括代入から保護されます。いくつかのオプションがあります:

モデルの入力可能な列を設定します。

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));
        }
 }
于 2013-10-25T14:34:22.127 に答える