Laravel模型返回" Undefined属性:stdClass :: $ name"

时间:2014-08-21 02:20:12

标签: 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

1 个答案:

答案 0 :(得分:3)

根据您的代码,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

了解详情