laravel 5.7 Ошибка: вызов функции-члена save () в null - PullRequest
1 голос
/ 12 марта 2019

Я использую Laravel Framework 5.7.25
Я пытаюсь создать сообщение текущего пользователя, который уже вошел в систему.
, но я сталкиваюсь с этими ошибками:

Вызов функции-члена save () в null это ошибка: это мой 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');
  }
}

Ответы [ 2 ]

5 голосов
/ 12 марта 2019

Ваши user() и posts() отношения ничего не возвращают:

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

должно стать:

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

и тот же твик, сделанный для user().

1 голос
/ 12 марта 2019

Я бы немного изменил ваш код, это должно работать:

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

        return redirect()->route('dashboard');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...