点击链接时,Laravel Ajax无法更新数据库

时间:2017-03-29 10:54:25

标签: ajax database laravel

我在公共文件夹上有一个音频文件,如下所示 -

@foreach ($songs as $song)
     <a href="{{asset('/audio/' . $song->song)}}" download="" >
        <button type="button" class="download" style="margin-bottom: 15px;">
           <i class="glyphicon glyphicon-download">Download</i>
        </button>
     </a>
 @endforeach

因此,当我点击该按钮时,它会下载该歌曲。在我的数据库中,歌曲&#34;歌曲&#34; table有歌曲列,另一个用于download_count,设置为默认值(0)。当我点击ajax链接时,我尝试更新download_count。我的阿贾克斯:

$(function() {
  $('.download').click(function(){
 $.ajax({
   url: "/update_download_count",
   type:"POST",
   data: {
     song_id:$(this).attr('data-id')
   }
  });
});
    }); 

我的路线:

Route::post('/update_download_count', 'PagesController@updateDownloadCount');

控制器:

public function updateDownloadCount(){
         $song_id = $_POST['song_id'];
         $song->download += 1;
         $song->save();
}

但是,我无法更新我的数据库,但是我点击链接。它仍然在download_count列中设置为0。 Plz帮忙,有什么不对?

4 个答案:

答案 0 :(得分:0)

你实际上并没有选择这首歌。

public function updateDownloadCount(Request $request) {
    $song = Song::find($request->input("song_id"));
    $song->download += 1;
    $song->save();
}

答案 1 :(得分:0)

请为您的歌曲模态声明对象。

public function updateDownloadCount() {
     $song = Song::findOrFail($_POST['song_id']);
     $song->download += 1;
     $song->save();
}

答案 2 :(得分:0)

public function updateDownloadCount(Request $request){
     \DB::table('songs')->where('songs_id', $request->input("song_id"))->increment('download');
}

答案 3 :(得分:0)

而不是

$song->download += 1;

尝试:

Song::find($request->input("song_id"))->increment('download');

我认为应该有效