2016-04-03 5 views
0

Мне нужно получить Auth::id() в моей модели, чтобы проверить, проголосовал ли текущий пользователь. Как получить доступ к текущему пользователю в модели Eloquent?Laravel текущий пользователь в модели

Модель: namespace 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(); 
    } 
} 

В getIsUserVotedAttribute методы я получаю \Auth::id() пустых

+0

ли вы имеете в виду вы получаете идентификатор или нуль? –

+0

Покажите вам импорт пот в этом классе – Naumov

+0

Обновленный вопрос. Я получаю null –

ответ

0

Если вы планируете вызвать метод getIsUserVotedAttribute() после создания экземпляра Acticle в controller, как это:

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

Я предлагаю вам передайте user id в качестве параметра при определении method таким образом, чтобы

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

Затем вы можете использовать его в контроллере, как этот

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

Надеется, что это помогает

+0

К сожалению, я не могу это сделать, потому что я использую Transformers для возврата JSON, а мой индексный метод в контроллере выглядит так: return $ this-> response-> withPaginator (Article :: orderBy ('id', 'desc') -> paginate (15), новый ArticleTransformer, «статьи»); –

Смежные вопросы