2016-03-28 56 views
0

請幫助我。我是laravel 5.2的新手。我不知道爲什麼我得到這種錯誤:致命錯誤:調用一個成員函數posts()null 這是我的postController文件。laravel 5.2->致命錯誤:調用成員函數null(012)

<?php 
namespace App\Http\Controllers; 

use App\post; 
use Illuminate\Http\Request; 

class postController extends Controller 
{ 
    public function createPost(Request $request) 
    { 
    //validation.. 
    $post= new Post(); 
    $post->body= $request['body']; 
    $request->user()->posts()->save($post); 

    return redirect()->route('dashboard'); 
    } 
} 

這是我post.php中提前文件

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Post extends Model 
{ 
    public function user() 
    { 
     return $this->belongsTo('App\user'); 
    } 
} 

我user.php的文件

<?php 

namespace App; 

use Illuminate\Contracts\Auth\Authenticatable; 
use Illuminate\Database\Eloquent\Model; 


class User extends Model implements Authenticatable 
{ 
    use \Illuminate\Auth\Authenticatable; 

    public function posts() 
    { 
     return $this->hasMany('App\post'); 
    } 
} 

感謝。

回答

2

難道您尚未登錄,您的應用程序,這就是爲什麼當你叫:

$request->user()->posts()->save($post); 

用戶()仍然是空,因此會出現的職位()的關係沒有提及?

編輯:

要檢查您是否已登錄在你可以說:

if(Auth::user()){ 
//do something here... 
} 

此外,我不認爲你應該保存你的帖子這樣。如果你想在你的文章中添加user_id,你可以這樣說:

$post->user()->associate(Auth::user()); 
$post->save(); 
+0

我該如何檢查用戶是否已經登錄。因爲當我輸入錯誤的信息時,您將重新直接回到登錄頁面。但是當您輸入正確的信息時,您將重新直接轉到儀表板。 – John

+0

這是我的登錄功能.. 公共功能登錄(Request $ request) {this-> validate($ request,[ 'email'=>'required', 'password'=>'required' ]); if(Auth :: attempt(['email'=> $ request ['email'],'password'=> $ request ['password']])){ return redirect() - > route('dashboard 「); } return redirect() - > back(); } 我是laravel的新手。 :( – John

+0

我編輯了我的答案,請參閱上文。 – Jed

相關問題