laravel 5.7错误:在null上调用成员函数save()

时间:2019-03-12 15:53:18

标签: php laravel laravel-5.7

我正在使用Laravel Framework 5.7.25
我正在尝试由已经登录的当前用户创建一个帖子。
但我遇到这些错误:

  

在null上调用成员函数save()   this is Error:   这是我的PostController:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;

class PostController extends Controller
{
    public function postCreatePost(Request $request)
    {
        $post = new Post();
        $post->body=$request['body'];
        $request->user()->posts()->save($post);
        return redirect()->route('dashboard');
    }
}

这是邮政模型

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

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

这是用户模型

<?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()
  {
      $this->hasMany('App\Post');
  }
}

2 个答案:

答案 0 :(得分:6)

您的user()posts()关系没有返回任何内容:

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

需要成为:

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

和对user()所做的相同调整。

答案 1 :(得分:2)

我会稍微更改您的代码,这应该可以:

class PostController extends Controller
{
    public function postCreatePost(Request $request)
    {
        $request->user()->posts()->create($request->only('body'));

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