【问题标题】:laravel 5.7 Error: Call to a member function save() on nulllaravel 5.7 错误:在 null 上调用成员函数 save()
【发布时间】:2019-03-13 00:02:03
【问题描述】:

我正在使用 Laravel 框架 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');
    }
}

这是 Post 模型

<?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');
  }
}

【问题讨论】:

  • return $this->hasMany

标签: php laravel laravel-5.7


【解决方案1】:

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

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

需要成为:

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

对user() 进行了同样的调整。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 1970-01-01
      • 2018-09-06
      • 2020-07-16
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多