我正在使用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');
}
}
答案 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');
}
}