Eloquent firstOrCreate文档或用法

时间:2013-10-25 14:11:21

标签: laravel laravel-4 eloquent

我正在尝试寻找一个表,看看是否存在一个名为“name”的列,如果返回该值,如果没有创建具有空值的行,我看到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;
                }
        }

1 个答案:

答案 0 :(得分: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();

}

一切都没有人看守。

查看文档:{​​{3}}

您也可以使用Facade来调用它:

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

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