2016-04-03 13 views
0

Ich muss Auth::id() in meinem Modell zu überprüfen, ob der aktuelle Benutzer gewählt hat. Wie kann man im Eloquent Model auf den aktuellen Benutzer zugreifen?Laravel aktueller Benutzer in Modell

Modell: Namensraum App;

use App\User; 
use App\ArticleVote; 
use Illuminate\Database\Eloquent\Model; 

class Article extends Model { 
    protected $fillable = ['title', 'body', 'link']; 
    protected $appends = ['votesCount', 'isUserVoted']; 

    public function getIsUserVotedAttribute() { 
    return !!$this->votes()->where('user_id', \Auth::id())->first(); 
    } 
} 

In getIsUserVotedAttribute Methode, die ich bekommen \Auth::id() von null

+0

Haben Sie meinen Sie ID oder null erhalten? –

+0

Zeigen Sie Import Pat in dieser Klasse – Naumov

+0

Aktualisierte Frage. Ich bekomme null –

Antwort

0

Wenn Sie getIsUserVotedAttribute() die Methode aufzurufen, nachdem eine Instanz von Acticle in einem controller wie folgt zu schaffen:

$article = new Article; 
$article->getIsUserVotedAttribute(); 

ich Ihnen vorschlagen übergeben Sie die user id als Parameter bei der Definition der method, so dass

public function getIsUserVotedAttribute($user_id) { 
    return !!$this->votes()->where('user_id', $user_id)->first(); 
} 

Dann können Sie es in Ihrem Controller verwenden wie dieses

$article = new Article; 
$article->getIsUserVotedAttribute(Auth::user()->id); 

Hoffe, es hilft

+0

Leider kann ich das nicht tun, weil ich Transformers verwende, um JSON zurückzugeben, und meine Indexmethode im Controller sieht so aus: return $ this-> response-> withPaginator (Article :: orderBy ('id', 'desc') -> paginate (15), neuer ArticleTransformer, "articles"); " –