在 Laravel 中从 JavaScript 调用模型函数

Call model function from JavaScript in Laravel

我实际上 运行 遇到了我当前项目的小问题。以下案例:

我有一个名为 "Posting" 的模型,其关系为:

public function subscribers(){
    return $this->belongsToMany('User');    
}

在我的视图文件中,有一个 table 包含所有帖子,还有一个 subscribing/unsubscribing 的复选框,其值与帖子 ID 匹配:

<input class="click" type="checkbox" name="mobileos" value="{{{$posting->id}}}"
     @if($posting->subscribers->find(Auth::User()->id)) 
         checked="checked"
     @endif
>

现在我要存档的东西:

A JavaScript 将监视复选框是否被选中。据此,当前用户 subscribes/unsubscribes 发帖。类似于:

        $('.click').on('click',function() {

            // $posting->find(---$(this).prop('checked')---)->subscribers()->attach(---Auth::user()->id---);
            // $posting->find(---$(this).prop('checked')---)->subscribers()->detach(---Auth::user()->id---);
        });

有没有可能以这种方式或任何其他方式实现?到目前为止,我无法理解这个问题。

干杯, 克里斯

如果您想使用 Ajax 实现此目的,您将需要 Laravel 中的 REST 端点用于订阅,例如:

http://localhost/subscribe/{{userid}}

调用此端点时,可以更新数据库。该函数还可以return一个JSON显示,如果在数据库中保存数据库成功。

使用此端点进行 Ajax 点击调用:

var user = {
   id: 0 // retrieve the correct ID from wherever it is stored
}

$('.click').on('click',function() {

  $.GET('http://localhost/subscribe/' + user.id, 
  function () { // this is the success callback, that is called, if the Ajax GET did not return any errors
    alert('You are subsribed')
  });

});

理想情况下,您不会使用 GET 方法,而是 使用 POST 并将用户 ID 作为数据发送。此外,您还需要从会话或存储它的任何地方检索用户 ID。

请注意,在您使用 Ajax 时,它可以很容易地从客户端进行操作。所以在服务器上你应该检查发送的用户 ID 是否与会话中的相同。也许您根本不需要发送用户 ID,但这取决于您的后端是如何构建的。