最近在幾個實例中,我已經將Laravel從4.0升級到4.1。今天我又在另一個實例中進行了升級,發現用戶模型存在問題。 models/User.php
文件仍然存在,但我認爲它不再被Laravel使用。我的問題是:爲什麼?Laravel 4.1升級後出現「用戶」模式
爲了說明這個問題,我在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();
}
現在,如果我啓動的第一個網址,/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()
方法?這是不正常的,對吧?
正如我前面所說,除了與用戶模型有關的事情之外,其他所有工作都很完美。
感謝您的努力,但您的建議並沒有幫助我的情況。 –
嘗試'return $ user-> courses() - > getResults() - > first();'? '$ user-> courses()'返回一個'BelongsToMany'類 – cecilozaur
這仍然沒有幫助。我認爲語法是正確的,因爲'$ course-> users() - > first();'實際上可以工作,同時它也使用'belongsToMany'關係。出於某種原因,找不到用戶模型中的方法... –