laravel 5.2->致命错误:在 null 上调用成员函数 posts()

Joh*_*ohn 1 laravel-5.2

请帮帮我。我是 Laravel 5.2 的新手。我不知道为什么我会收到这种错误:致命错误:在 null 上调用成员函数 posts() 这是我的 postController 文件。

<?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');
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的 Post.php 文件

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

我的 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');
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Jed*_*Jed 5

您是否可能尚未登录您的应用程序,这就是您调用的原因:

$request->user()->posts()->save($post);
Run Code Online (Sandbox Code Playgroud)

user() 仍然为空,所以将没有对 posts() 关系的引用?

编辑:

要检查您是否已登录,您可以说:

if(Auth::user()){
 //do something here...
}
Run Code Online (Sandbox Code Playgroud)

此外,我认为您不应该那样保存您的帖子。如果您想在帖子中添加 user_id,您可以说:

$post->user()->associate(Auth::user());
$post->save();
Run Code Online (Sandbox Code Playgroud)