Laravel自定义方法适用于浏览器,但不适用于修补程序。为什么?

时间:2015-07-18 18:58:24

标签: laravel laravel-5

我正在使用W. Jason Gilmore撰写的Easy Laravel Book中的样本。我根据本书中的示例创建了以下方法:

public function categories(){
    return $this->belongsToMany('todoparrot\Category', 'category_todolist')->withTimestamps();
}

然后我创建了自己的自定义方法:

public function categorylist(){
    return $this->categories()->get()->lists('id')->all();
}

我的自定义方法取决于上面的第一个。我创建该方法的原因是因为5.1中的更改​​不会返回数组中的数据。我需要在一个单独的文件中使用数组:

<div class="form-group">
    {!! Form::label('Categories') !!}
    {!! Form::select('categories', $categories, $list->categorylist(), array('multiple'=>'multiple','name'=>'categories[]')) !!}
</div>

在浏览器中一切正常,但我想知道为什么我不能在修补程序中调用categorylist()。

如果我打电话给类别(),我明白了:

>>> $foo->categories()
=> <Illuminate\Database\Eloquent\Relations\BelongsToMany #000000005647099500000001622e905d> {}
>>> 

如果我打电话给categorylist(),我明白了:

>>> $foo->categorylist()
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::categorylist()'
>>> 

当浏览器中的所有内容按预期正常工作时,为什么我会在Tinker中收到 调用未定义的方法 错误。

我正在使用Laravel 5.1

0 个答案:

没有答案