我有一个“小说”的模型,它是“可收藏的”并且有“书签”
我想展示一本小说的书签数量,并确定当前登录的用户是否为该小说添加了书签。
App\Novel::withCount('chapters', 'bookmarks')
->with(['author', 'ratings'])
->newestPublished()
->paginate(10)
此显示的通话效果非常好。但是,如果当前用户为小说添加了书签,我很乐意直接看到结果。
对于书签的计数,我将以下内容构建到我的小说模型中
public function getBookmarksCountAttribute()
{
return $this->bookmarks()->count();
}
我可以以某种方式创建另一个“getBookmarksCountAttribute”方法,然后像这样工作
public function getUserBookmarkCountAttribute()
{
if ( !Auth::user() ) {
return false;
}
return $this->bookmarks()->where('user_id', Auth::user()->id)->first() ? true : false;
}
有没有办法轻松将其添加到我的查询中?
答案 0 :(得分:1)
方法first()
产生第一个结果或null。
GET /eureka/v2/apps
public function getUserBookmarkCountAttribute()
{
if ( !Auth::user() ) {
return false;
}
return !is_null($this->bookmarks()->where('user_id', Auth::user()->id)->first());
}
您可以将该属性添加到$appends
数组,这样您就不需要明确地将计数存储在表格中。
在模型中使用Auth Facade不是一个好习惯。更好的方法是使用依赖注入将用户对象/ id传递给模型。