当前位置: 首页 > 面试题库 >

如何为Laravel / Eloquent模型设置默认属性值?

郑宏朗
2023-03-14
问题内容

如果我尝试声明属性,如下所示:

public $quantity = 9;

…它不起作用,因为它不被视为“属性”,而仅仅是模型类的一个属性。不仅如此,而且我也禁止访问实际存在的“数量”属性。

那我该怎么办?


问题答案:

这就是我现在正在做的:

protected $defaults = array(
   'quantity' => 9,
);

public function __construct(array $attributes = array())
{
    $this->setRawAttributes($this->defaults, true);
    parent::__construct($attributes);
}

我将其建议为PR,因此我们无需在每个Model上都声明此构造函数,并且只需$defaults在模型中声明数组即可轻松应用…

更新

正如cmfolio指出的那样, 实际的ANSWER非常简单

只需覆盖$attributes属性!像这样:

protected $attributes = array(
   'quantity' => 9,
);

这里讨论了这个问题。



 类似资料:
  • 我在spring-boot项目中有一个properties类。 现在,我想将的application.properties文件中的其他属性设置默认值。与下面的示例使用@value所做的类似

  • 问题内容: 如何在hibernate字段中设置默认值? 问题答案: 如果要使用真实的数据库默认值,请使用: 注意,其中的字符串是数据库相关的。同样,如果选择此选项,则必须使用,因此不包括在插入时带有值的列。否则谈论默认是无关紧要的。 但是,如果您不希望数据库默认值,而只是Java代码中的默认值,只需像这样初始化变量-

  • 我在模型中有: laravel是否有能力设置演员表格式,例如: ? 编辑过 我试过这个: 在模型中: 我将日期(驱动程序到期)保存为“01/012016”,但日期保存为0000-00-00。 laravel文件:https://laravel.com/docs/5.1/eloquent-mutators Tell us$dateFormat仅适用于时间戳(“创建时间”、“更新时间”、“删除时间”)

  • 问题内容: 有没有一种方法可以设置javascript对象的默认属性,例如: IE可以忽略,Chrome Frame减轻了我的头痛。 问题答案: 自从几年前我问这个问题以来,事情进展顺利。 代理是ES6的一部分。以下示例可在Chrome,Firefox,Safari和Edge中运行:

  • 问题内容: 尝试使用WTForms设置SelectField的默认值时,我像这样将值传递给“默认”参数。 我也尝试了以下方法。 都不将默认选定字段设置为“ Def”。这适用于其他类型的字段,例如TextField。如何设置SelectField的默认值? 问题答案: 你发布的第一种方法是正确的,并且对我有用。唯一无法解释的原因可能是你正在运行旧版本的WTForms,它在1.0.1上对我有效

  • 我想在PHPUnit测试中使用模拟对象(mockry)。模拟对象需要同时设置一些公共方法和一些公共属性。这门课是拉威尔雄辩的典范。我试过这个: ... 但是设置公共属性会返回以下错误: BadMethodCallException:此模拟对象上不存在方法Mockery_0_User::setAttribute() 在模拟简单类时不返回此错误,但在尝试模拟雄辩模型时返回此错误。我做错了什么?