代码之家  ›  专栏  ›  技术社区  ›  Michał Śnieżko

$model->foo和$model->getAttributeValue('foo')之间有什么区别?

  •  3
  • Michał Śnieżko  · 技术社区  · 6 年前

    当我有一个名为$model的雄辩模型实例时,我可以通过两种方式检索其属性的值(例如用户名):

    $name = $user->name;
    

    $name = $user->getAttributeValue('name');
    

    哪种方法是正确的?这两种检索值的方法之间的区别是什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Camilo    6 年前

    调用模型属性时,

    • 首先 __get() 方法被调用。
    • 然后 getAttribute() 方法被调用。
    • 最后 getAttributeValue() getRelationValue() 被调用。

    所以,使用属性或 getAttributeValue() 获取模型属性。请记住,它不能访问模型关系。

    让我们注意到,大多数(或全部?)Laravel文档的使用特性访问模型属性。