【问题标题】:make and access object like eloquent object laravel像 eloquent 对象 laravel 一样制作和访问对象
【发布时间】:2021-11-12 02:04:40
【问题描述】:

我有一个代码 User::find(0) 将在数据库类型对象中查找并返回第一个用户的数据。我可以设置像 $user->name = "Name 1" 或 $user->name = "Name 2" 这样的值。

“不能使用 stdClass 类型的对象作为数组”

我创建了一个新变量,例如 $teacher = (object) [] 和 $teacher = new \stdClass。我可以设置像 $teacher->name = "Teacher 1" 这样的值。但是,如果我将其设置为 $teacher['name'] = "Teacher 1",则会出现上述错误。

预期类型“对象”。找到字符串[]。

所以,我试着让 $teacher = array() 和 $teacher = [];我可以设置像 $teacher['name'] = "Teacher 1" 这样的值,但是如果我用 $teacher->name = "Teacher 2" 设置它会出现上述错误。

所以,我很困惑为什么可以使用 '->' 和 '[]' 设置 User::find(0) 对象。我仍在学习使用文档。我花了很多时间,但即使在另一个网站上也找不到它。你能告诉我如何制作像 User::find(0) 这样可以使用 '->' 和 '[]' 设置值的对象吗?

【问题讨论】:

    标签: php arrays laravel object


    【解决方案1】:

    这是因为您的 User 模型扩展了 Laravel 基础模型 Illuminate\Database\Eloquent\Model.php。基本模型实现了ArrayAccess 接口,该接口允许将对象作为数组访问。

    您可以在 php 本身的文档中了解更多信息 https://www.php.net/manual/en/class.arrayaccess.php

    【讨论】:

    • 哇,谢谢。这对我真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多