【发布时间】:2018-06-28 02:37:06
【问题描述】:
我目前正在尝试在我的 laravel 项目中实现书签功能,并且我正在使用这种设计。 Bookmark 表是 User 和 Post 表的枢纽,多对多关系
public function BookmarkPost(Request $request,$id)
{
$book = Auth::guard('api')->user()->bookmarks()->attach($id);
return response()->json( $book);
}
/**
* Unfavorite a particular post
*
* @param Post $post
* @return Response
*/
public function unBookmarkPost(Request $request,$id)
{
$unbook = Auth::guard('api')->user()->bookmarks()->detach($id);
return response()->json( $unbook);
}
有BookmarkController的代码
在用户模型中定义关系后,我创建了一个方法来检查帖子是否在我的帖子模型中被收藏
public function bookmarked()
{
return (bool) Bookmark::where('user_id', Auth::guard('web')->id())
->where('job_id', $this->id)
->first();
}
有 Post 模型的代码。这应该检查帖子是否已被收藏。
所以我还设置了一个 vue 组件,它接收两个 props
<bookmark-icon :id="job.id" :bookmarked="job.bookmarked ? true : false "></bookmark-icon>
所以我现在的主要问题是我使用书签图标作为子组件我将如何在 Vue 实例上调用书签()方法,如果它是刀片,它本来会是
{{$job->bookmarked()}}
我如何使用 Vue 来获得它??
【问题讨论】:
-
您可以使用
computed属性,例如bookmarked() { return this.job.bookmarked ? true: false }。那么您的财产将是:bookmarked="bookmarked"。 -
你没有在这里得到我的问题,我正在尝试在 vue 中复制这个 {{$job->bookmarked()}} 的内容
-
你会用
{{$job->bookmarked()}}实现什么?只显示true或false?有条件地显示书签图标?{{ bookmarked ? 'true' : 'false' }}如果是前者,v-if="bookmarked"在bookmark-icon组件上如果是后者。您的问题不清楚预期的结果应该是什么。
标签: javascript php laravel model vue.js