Model Laravel和Vue上的自定义方法

时间:2018-01-18 22:13:16

标签: javascript php laravel model vue.js

我目前正在尝试在我的laravel项目中实现书签功能,我正在使用此设计。 Bookmark表是User和Post表的一个支点,是一个多对多的关系

FORMAT(cast(<your column> as time), N'hh\:mm(24h)')

BookmarkController的代码

在用户模型中定义关系后,我创建了一个方法来检查帖子是否已在我的帖子模型中被收藏

  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);
}

有Post Model的代码。这应该检查帖子是否是博彩公司。

所以我也设置了一个vue组件,它包含两个道具

 public function bookmarked()
    {
           return (bool) Bookmark::where('user_id', Auth::guard('web')->id())
                              ->where('job_id', $this->id)
                              ->first();

      }

所以我现在的主要问题是我使用书签图标作为子组件如何在Vue实例上调用bookmarked()方法,如果它是刀片本身就是

<bookmark-icon :id="job.id" :bookmarked="job.bookmarked ? true : false "></bookmark-icon>

我如何使用Vue?

1 个答案:

答案 0 :(得分:1)

您无法在vuejs中访问雄辩的表单。

但是你可以在将数据传递给vuejs之前使用这种关系。

为了做到这一点,你必须急于加载它 (如果对你来说是新手,请在文档上阅读,非常有用的东西,特别是在性能方面) 您可以阅读这篇文章&#34; Importance of eager loading&#34;

这是你可以做到的,如下面的代码:

public function load_display()
    {

        $job = Job::bookmarked()->get();

        return response()->json($job );

    }