Я пытаюсь угадать, что в этом коротком коде, чем отличается, но я не могу. Один работает другой возвращается:Laravel «тот же» код разные результаты
Undefined property: Illuminate\Database\Eloquent\Builder::$join_books
Первый способ, это один бросает ошибка:
public function selectBook(){
try{
BookUser::create(Input::all());
if(!BookUser::userJoinBooks()){
$user = User::eloquentUser();
$user->join_books = 1;
$user->save();
}
MyHelpers::sendSessionFlashMessages('El libro ha sido seleccionado', 'bg-success');
}
catch (Exception $e) {
$message = MyHelpers::exceptionCatch($e);
MyHelpers::sendSessionFlashMessages($message['message'], $message['css-class']);
}
return Redirect::back();
}
Две линии после этого один я имею отменить выбор метода, похоже, то же самое, но работает отлично:
public function unselectBook(){
try{
$book_user = BookUser::find(Input::get('id'));
$book_user->delete();
if(BookUser::userBooksCount() == 0){
$user = User::eloquentUser();
$user->join_books = 0;
$user->save();
}
MyHelpers::sendSessionFlashMessages('El libro ha sido eliminado', 'bg-success');
}
catch (Exception $e) {
$message = MyHelpers::exceptionCatch($e);
MyHelpers::sendSessionFlashMessages($message['message'], $message['css-class']);
}
return Redirect::back();
}
Если удалить из метода SelectBook "! BookUser :: userJoinBooks()" в заявлении, если и использовать, если (1), например, это произведения. Я не знаю, почему, если я сделаю $ user asigment после этого статического метода, это может повлиять на него.
Это статический код метода:
public static function userJoinBooks($id = null){
$user_id = $id === null ? Sentry::getUser()->getId(): $id;
return User::where('id',$user_id)->join_books == 0 ? false : true;
}
И другой тоже может быть помощь:
public static function userBooksCount($id = null){
$user_id = $id === null ? Sentry::getUser()->getId(): $id;
return BookUser::where('user_id',$user_id)->count();
}
И это метод eloquentUser:
public static function eloquentUser(){
$sentry_user = Sentry::getUser();
return $user = User::findOrFail($sentry_user->id);
}
Действительно Я не могу использовать Sentry :: getUser в своем коде, если в какой-то момент я буду использовать другой u ser.
Спасибо :)
Вместо того чтобы делать: 'Возвращение пользователя :: where ('id', $ user_id) -> join_books', попробуйте выполнить 'return User :: where ('id', $ user_id) -> first() -> join_books'. Кажется, что вы извлекаете коллекцию вместо одного экземпляра. – Mindastic