php - Laravel 模型返回 "Undefined property: stdClass::$name"

标签 php laravel model

我一直试图让我的类模型正常工作,但它不断返回此错误。
该模型看起来像:

class Food
{
    protected $id;

    public function __construct($id)
    {
        $results = DB::select('select * from food where id = ?', array($id));
        if ( empty($results) )
        {
            throw new Exception('Food do not exsist.');
        } else {
            $this->food = (object) $results;
        }
    }

    public function name()
    {
        return $this->food->name;
    }

}

当我调用它时:
$food = new Food($id);
var_dump($food->name()); exit;

返回:
Undefined property: stdClass::$name

最佳答案

根据您的代码,DB::select将返回一个包含多个对象(可能不止一个)的数组,然后将其分配给 $this->food .

请记住,$this->food好像

Array (
    [0] => stdClass Object (
        [name] => 'Beef'
    )
)

其实,$this->food->name正在尝试访问未定义的属性。

解决方案 1 :

您应该使用 $this->food[0]->name访问它。

虽然看起来很奇怪,但它确实有效。

解决方案 2 :

为什么不打电话Food::find($id)获取对象而不是 $food = new food($id)
您可以通过阅读此内容了解更多信息 http://laravel.com/docs/eloquent

关于php - Laravel 模型返回 "Undefined property: stdClass::$name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25417312/

相关文章:

php - SQLSTATE[HY000] : General error: 2053

php - elasticsearch查询帮助-找不到文档

laravel - 在运行 laravel phpunit testcase 时,我在 Model.php 第 1249 行收到错误 "Call to a member function connection() on null"

php - 如何在 laravel 的布局中将数据传递到我的标题?

model-view-controller - Yii2 - DynamicModel 中的属性

c# - Ajax.BeginFrom 验证模型

ruby-on-rails - Rails 角色模型默认(如果不存在)

php - 如何将 3 个表与 2 个表的数据总和连接起来

php - Laravel 在模型保存时插入两次之间的差异

validation - Laravel 5 Form Request Attribute 漂亮的名字不适用于自定义验证器