Dokunulması gereken birçok şey olduğu dikkati çekiyor. Yeteri kadar kod var ama cevap için ek açıklamalar gerekiyor. Bir sayfada aynı id'li birden çok eleman olmasına izin verilmemesi gerekiyor ve Tablo ilişkilerinin daha açık belirtilmesine, contents_id ve vote vb. alanlarının neyi tuttuklarının açıklanmasına göre söylenecek bazı şeyler olabilir.
Sorun sadece imajın idini göndermek olsaydı,
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
satırının altına
<input type="hidden" name="imajid" value="{{ $contestimage->id }}" />
eklemeniz yeterli olurdu.
Ajax işlemi yaparken Form serialize ile hem _token hem de imajid gönderileceği için tokeni ayrı, form serilizeyi ayrıca belirtmenize gerek yoktur. İmaj idi buradan alacağımız için vote rotasının ve gönderdiği controller metodunun parametreli olmasına gerek yoktur.
Kodunuzda ilk etapta hatalı gibi gelen ya da anlayamadığım diğer şeyler şöyle:
-Inputlar arasında vote adlı bir şey yoktur ($vote = Input::get('vote'); için söylüyorum) .
-user_id ve contest_id'in her ikisinin de tamsayı olması beklenirken contest_id'e bir ContestImage nesnesi atandığı, where sorgusunda da yine bununla arama yapıldığı görülüyor.
-Vote alanının neyi ifade ettiği bilinmemekle birlikte eğer oy sayısını tutuyorsa PostVote metodunun mevcut bir entry bulamadığında da $vote alanını ayarlaması gerekir. Ve öyleyse Vote alanı niye tinyint'tir, 225 oydan fazla oy alamayacak mıdır?
-Kullanıcı giriş yapmamışsa ve istek ajax değilse metod bir sonuç döndürüyor. Her şey yolunda giderse de bir sonuç döndürmesi gerekir. Ben şöyle anlıyorum, eğer vote alanı oy sayısı ise, vote alanı değerini döndürüp, sonrada ajax'taki success eventinde bu oy sayısını sayfada güncellersiniz.