2016-03-28 3 views
0

Hilf mir bitte. Ich bin ein Neuling bei Laravel 5.2. Ich weiß nicht, warum ich bekomme diese Art von Fehler: Schwerwiegender Fehler: Aufruf an ein Mitglied Funktion Beiträge() auf Null Dies ist meine postController-Datei.laravel 5.2-> Schwerwiegender Fehler: Aufruf an eine Member-Funktion posts() auf null

<?php 
namespace App\Http\Controllers; 

use App\post; 
use Illuminate\Http\Request; 

class postController extends Controller 
{ 
    public function createPost(Request $request) 
    { 
    //validation.. 
    $post= new Post(); 
    $post->body= $request['body']; 
    $request->user()->posts()->save($post); 

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

das ist mein post.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

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

meine User.php Datei

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

Vielen Dank im Voraus einreichen.

Antwort

2

Ist es möglich, dass Sie nicht in noch Ihrer Anwendung angemeldet sind, warum, wenn Sie genannt:

$request->user()->posts()->save($post); 

Benutzer() ist immer noch null, so wird es keinen Hinweis auf die Beiträge sein() Beziehung?

EDIT:

Um zu überprüfen, ob Sie angemeldet sind können Sie sagen:

if(Auth::user()){ 
//do something here... 
} 

Außerdem glaube ich, nicht Sie Ihren Beitrag so sparen sollte. Wenn Sie die Benutzer-ID zu Ihrem Beitrag hinzufügen möchten, können Sie Folgendes sagen:

$post->user()->associate(Auth::user()); 
$post->save(); 
+0

Wie kann ich überprüfen, ob dieser Benutzer bereits angemeldet ist oder nicht? Denn wenn ich falsche Informationen eingib, kehrt man direkt zur Anmeldeseite zurück. Aber wenn Sie die richtigen Informationen, die Sie wirst wieder direkt gehen auf das Armaturenbrett .. – John

+0

diese Anmeldungsfunktion .. public function Login (Request $ request) { $ this-> validate ($ request, [ 'email' => 'required', 'password' => 'required' ]); if (Auth :: versuchen (['E-Mail' => $ Anfrage ['E-Mail'], 'Passwort' => $ Anfrage ['Passwort']])) { Return Redirect() -> Route ('Dashboard "); } return redirect() -> zurück(); } Ich bin ein Neuling zu Laravel. :( – John

+0

Ich habe meine Antwort bearbeitet, siehe oben. – Jed

Verwandte Themen