我当前的项目实际上遇到了一些小问题。以下案例:
我有一个名为“Posting”的模型,其中包含关系:
public function subscribers(){
return $this->belongsToMany('User');
}
在我的 View 文件中,有一个包含所有帖子的表,还有一个用于订阅/取消订阅的复选框,其值与发布 ID 相匹配:
<input class="click" type="checkbox" name="mobileos" value="{{{$posting->id}}}"
@if($posting->subscribers->find(Auth::User()->id))
checked="checked"
@endif
>
现在我要存档的东西:
JavaScript 将监视复选框是否被选中。据此,当前用户订阅/取消订阅该帖子。像这样的东西:
$('.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}}
当调用此Endpoint时,可以更新数据库。该函数还可以返回一个 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 作为数据发送。此外,您还需要从 session 或存储它的任何位置检索用户 ID。
请注意,当您使用 Ajax 时,它可以很容易地从客户端进行操作。因此,您应该在服务器上检查发送的用户 ID 是否与 session 中的用户 ID 相同。也许您根本不需要发送用户 ID,但这取决于您的后端是如何构建的。
关于javascript - 在 Laravel 中从 JavaScript 调用模型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28996510/