我正在尝试寻找一个表,看看是否存在一个名为“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;
}
}
答案 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));
}
}