Пользователь:Zizaco Доверьте 'hasRole' не работает в контроллере Laravel
<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
use Zizaco\Entrust\HasRole;
class User extends Eloquent implements UserInterface, RemindableInterface {
use HasRole;
Role Model:
<?php
use Zizaco\Entrust\EntrustRole;
class Role extends EntrustRole
{
}
Разрешение Модель:
<?php
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission
{
}
контроллер пользователя:
public function postSignin(){
if (Auth::attempt(array('email'=>Input::get('email'),
'password'=>Input::get('password')))) {
$id = Auth::user()->id;
$user = User::where('id','=',$id);
$firstname = Auth::user()->firstname;
if ($user->hasRole("User_Not_Approved")) {
return Redirect::intended('/users/dashboard');
}
сообщение 210
Ошибка:
BadMethodCallException Призыв к неопределенным метод Осветите \ Database \ Query \ Builder :: hasRole()
Сообщение об ошибке представляется, когда оператор IF работает, в то время как пользователь входит в систему. Я следовал инструкциям Entrust, но я не понимаю, почему он не подбирает метод.
Любая помощь была бы чрезвычайно оценена!
Чтобы уточнить, -> где возвращается объект Query Builder, который ожидает, что он будет привязан к другим методам построения, например, больше где(), sum() и т. Д. И т. Д. Вы должны «закончить» свой запрос с помощью либо a -> get(), чтобы вернуть коллекцию, либо -> first() (которая вернет первый результат из вашей коллекции). В противном случае -> find() пропускает все это и является самым простым способом захвата чего-то своим основным ключом :) – John
Спасибо, Джон, это наиболее полезно. Вы объясните это яснее, чем руководство Laravel! Сейчас это работает. Еще раз спасибо. – Ben
Без проблем, рад, что я мог бы помочь! Я согласен, что Laravel docs закончил тем, что оставил мне больше вопросов, чем ответов. Некоторое время понадобилось поиграть, чтобы получить хорошее представление о вещах. Держись, и все начнет иметь больше смысла! – John