错误的方法调用异常

时间:2016-05-06 00:10:17

标签: exception-handling model laravel-5.2

这是我的路线

Route::get('desktops/{desktop}','DesktopsController@getdesktop');

这是我的控制器方法

public function getdesktop($identifier)
{
    $desktop = Desktop::all()->where('identifier',$identifier);
    $casings = $desktop->casings();
    dd($casings);

}

我添加了App \ Desktop,这是我在Desktop Class / Model

中定义的框架方法
public function casings()
{
    return $this->hasMany('App\Casing');
}

现在它似乎正在修补,但是当我在浏览器中打开它时会抛出一个未找到的方法或者确切的BadMethodCallException异常,即使我在类中定义了方法。我似乎无法弄清楚问题。

2 个答案:

答案 0 :(得分:0)

当您在模型中定义关系时,它会作为属性而不是集合中的函数传入到eloquent对象中。

因此,您需要在没有()的情况下访问它:

$casings = $desktop->casings;

您可以在docs

中找到有关访问关系的更多信息

答案 1 :(得分:0)

我正在使用这个

desktop = Desktop::all()->where('identifier',$identifier);

返回了一个包含多条记录的记录集。即使只有1条记录,它也将它视为一个集合。所以我尝试改变

desktop = Desktop::all()->where('identifier',$identifier)->first();

只提取了一条记录并且有效。