Php 获取雄辩模型Laravel 5.1的原始属性

Php 获取雄辩模型Laravel 5.1的原始属性,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有Foo属性,它使用getFooAttribute方法在显示之前格式化它,但在某些地方,我需要它的原始属性。那么我该怎么做呢?如果您想在大多数代码中使用mutator,但有时希望访问原始值,您可以通过使用模型的getAttributes()方法获取所有属性,然后从中获取值,例如: $originalFoo = $model->getAttributes()['foo']; 我使用的是5.3,为此我使用$model->getOriginal()['foo']从v4.2开始获取特定属性的原

我有
Foo
属性,它使用
getFooAttribute
方法在显示之前格式化它,但在某些地方,我需要它的原始属性。那么我该怎么做呢?

如果您想在大多数代码中使用mutator,但有时希望访问原始值,您可以通过使用模型的getAttributes()方法获取所有属性,然后从中获取值,例如:

$originalFoo = $model->getAttributes()['foo'];

我使用的是5.3,为此我使用
$model->getOriginal()['foo']
从v4.2开始获取特定属性的原始值:


$originalFoo=$model->getOriginal('foo')

对于laravel 5,我们还可以使用:

$model->getOriginal('foo')

@bower

值得一提的是,Laravel模型类覆盖了
\uu set
\uu get
的神奇方法,因此您还可以动态检索
original
属性,即
$model->original


如果希望原始字段直接从数据库中删除,请参见

$mode->getRawOriginal('attribute')
这是一条路要走<代码>$model->getOriginal()
将为您提供mutator值而不是所需的原始数据

分别参见

Laravel 7和Symfony 5
$model->getRawOriginal()
getOriginal方法 影响可能性:低

$model->getOriginal()
方法现在将考虑在模型上定义的任何类型转换和变体。以前,此方法返回uncast原始属性。如果要继续检索原始的、未广播的值,可以使用
getRawOriginal
方法

  • 参考A:
  • 参考资料B:
    • 为我工作

      $newProduct = $product[0]->getRawOriginal();
      

      如果你想得到它的原始值,你必须删除你的get mutator。@Inurosen我需要在某个地方使用mutator。值得注意的是,如果你想得到某个属性的原始值,你只需将一个键传递到
      getOriginal
      。e、 g.
      $model->getOriginal('foo')
      getOriginal()方法用于获取从数据库加载的属性的原始值。它只在该值不变的情况下工作。如果此值被修改,它将不会像OP预期的那样工作。快速示例:1)假设从数据库加载$model,并且$model->getOriginal('foo')的值为“foo”。2) 更改属性值:$model->foo=“bar”;3) $model->getOriginal('foo')将返回“foo”而不是“bar”。@jedrzej.kurylo这就是为什么您应该使用setter
      $model->setFoo(“bar”)
      。这保留了
      $original
      数组,总体来说是一个很好的做法。