rufen Sie an eine member-Funktion auf null Laravel 5.2
Ich bin etwas zu schaffen, was mehr wie ein facebook-post , ich bekomme post von der Benutzer-und speichern Sie es auf die Datenbank für jetzt. Erstellt habe ich zwei Modelle Benutzer-und Post
hier ist der code von Benutzer-Modell
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Eloquent implements Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function posts()
{
return $this->hasMany('App\Post');
}
}
Hier ist der code von Post-Modell
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
und ich habe einen postController und hier ist der code, der es
use App\Post;
use App\Http\Requests;
use Illuminate\Http\Request;
use DB;
use Illuminate\Contracts\Auth\User;
use App\Http\Controllers\Controller;
class PostController extends Controller
{
public function createPost(Request $request)
{
$post = new Post();
$post->userpost = $request['userpost'];
$request->user()->posts()->save($post); -> **Error here Call to a member function posts() on null**
return redirect()->back();
}}
- Die Frage wird?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler anzeigt, dass
$request->user()
zurückgegebennull
, was bedeutet, dass der Benutzer nicht in der Anwendung eingeloggt – ich.e ist zu Gast. Die Methode$request->user()
wird nur ein Benutzer, wenn ein Benutzer authentifiziert ist.Aus der Dokumentation:
Die Lösung ist, wickeln Sie Ihren code in einen auth-überprüfung wie unten, oder verwenden Sie die middleware, um zu verhindern, dass der Zugang zu dieser route, es sei denn, der Benutzer authentifiziert ist.