我实际上遇到了当前项目的小问题。以下案例:
我有一个名为“发布”的模型与关系:
public function subscribers(){
return $this->belongsToMany('User');
}
在我的视图文件中,有一个包含所有Postings的表,还有一个用于订阅/取消订阅的复选框,其中匹配值为posts-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---);
});
是否有可能实现这种或任何其他方式?到目前为止,我无法理解这一点。
干杯, 克里斯
答案 0 :(得分:1)
如果您想使用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作为数据发送。此外,您还需要从会话或存储的任何位置检索用户ID。
请注意,当您使用Ajax时,可以轻松地从客户端进行操作。因此,如果发送的用户ID与会话中的用户ID相同,则应在服务器上进行检查。也许您根本不需要发送用户ID,但这取决于您的后端是如何构建的。