javascript - 模型 Laravel 和 Vue 上的自定义方法

标签 javascript php laravel model vue.js

我目前正在尝试在我的 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 模型的代码。这应该检查帖子是否已加入书签。

所以我还设置了一个接受两个 props 的 vue 组件

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

所以我现在的主要问题是我正在使用书签图标作为子组件,我将如何调用 Vue 实例上的 bookmarked() 方法,如果它是 Blade 的话,它会是

{{$job->bookmarked()}}

我如何使用 Vue 获得它?

最佳答案

你不能在 vuejs 中访问 eloquent 表单。

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

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

这就是你如何做到的,类似于下面的代码:

public function load_display()
    {

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

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

    }

关于javascript - 模型 Laravel 和 Vue 上的自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48331180/

相关文章:

php - 配置变量之间的冲突

php - Laravel 子域 : single auth across all subs not working?

javascript - 我可以通过 jQuery 创建脚本标签吗?

javascript - 使用 aws-cognito-identity-js 时获取类型错误

javascript - 单击外部隐藏下拉 div

javascript - 如何通过 bot API 使用 Google App 脚本将文件从电报下载到 Gdrive

php - 使用 PHP 模仿网络浏览器提交表单?不 curl

javascript - PHP 警报不显示

php - yii2 select2 by kartik-v 设置默认值

javascript - Laravel:在 View Blade 中解析此 json 数据?