【发布时间】:2014-02-09 13:25:58
【问题描述】:
我最近在一些情况下将 Laravel 从 4.0 升级到了 4.1。今天我在另一个实例中进行了升级,发现 User 模型有问题。 models/User.php 文件仍然存在,但我认为 Laravel 不再使用它了。我的问题是:为什么?
为了演示这个问题,我在 routes.php 中创建了以下条目:
Route::get('test1', function()
{
$course = Course::find(4);
return ($course->users()->first());
});
Route::get('test2', function()
{
$user = User::find(22);
return ($user->courses()->first());
});
这两个条目在语法和数据库对象方面都是正确的(存在 ID 为 4 的课程,存在 ID 为 22 的用户)。我的 Course.php 模型具有以下内容:
public function users()
{
return $this->belongsToMany('User')->withPivot('participant_role')->withTimestamps();
}
而我的User.php也有对应的入口:
public function courses()
{
return $this->belongsToMany('Course')->withPivot('participant_role')->withTimestamps();
}
现在,如果我启动第一个 URL /test1,我会得到一个有效的 JSON 条目。正如预期的那样。
使用第二个 URL,/test2 但是我收到一条错误消息:
BadMethodCallException
Call to undefined method Illuminate\Database\Query\Builder::courses()
open: /home/simoa/laravelapps/clientname/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php `
我认为这里有问题。为什么我的 Laravel 实例试图从 Illuminate\Database\Query\Builder 类调用 courses() 方法?这不正常,对吧?
正如我之前所说,除了与用户模型有关的事情之外,其他一切都完美无缺。
【问题讨论】: