Laravel “拉雷维尔”;“相同”;编码不同的结果

Laravel “拉雷维尔”;“相同”;编码不同的结果,laravel,undefined,Laravel,Undefined,我试着猜这段短代码有什么不同,但我猜不出来。一个工作,另一个返回: Undefined property: Illuminate\Database\Eloquent\Builder::$join_books 第一种方法,此方法引发错误: public function selectBook(){ try{ BookUser::create(Input::all()); if(!BookUser::userJoinBooks()){

我试着猜这段短代码有什么不同,但我猜不出来。一个工作,另一个返回:

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();
}
在这一行之后的两行我有unselect方法,看起来相同,但效果很好:

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();
}
如果我从If语句中的SelectBook方法中删除“!BookUser::userJoinBooks()”,并使用If(1)作为示例,则它可以正常工作。我不明白为什么在这个静态方法之后,如果我把$user作为一个片段,它可能会影响它

这是静态方法代码:

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();
}
这就是雄辩的方法:

public  static function eloquentUser(){
    $sentry_user = Sentry::getUser();
    return $user = User::findOrFail($sentry_user->id);
}
真的不记得为什么我使用这个方法了,我建议在我的代码中不要使用Sentry::getUser,如果在某个时候我会使用另一个用户的库


谢谢:)

问题在于代码的这一部分:

return User::where('id',$user_id)->join_books == 0 ? false : true;
我想您可能会想使用以下内容:

return User::findOrFail($user_id)->join_books == 0 ? false : true;

不要执行:
return User::where('id',$User\u id)->加入书籍
,而是尝试执行
return User::where('id',$User\u id)->first()->加入书籍
。似乎您正在检索一个集合,而不是一个实例。多亏了在电脑前花了很多时间,您肯定知道我在说什么;)