Я пытаюсь обновить столбец view_count
на каждом @click
.но не мог понять правильный путь.
Сначала сделал контроллер --resources и извлекал данные через api.
контроллер:
public function index()
{
$articles = Article::all();
return response()->json([
"articles" => $articles
], 200);
}
public function show($id)
{
$article = Article::whereId($id)->first();
return response()->json([
"article" => $article
], 200);
}
также установить функцию обновления тоже.
public function update(Request $request, $id)
{
$view = Article::find($id);
$view->update($request->where("view_count"));
return response()->json(["message" => "view_count updated"]);
}
Я устанавливаю маршруты API:
Route::get('/articles', 'ArticlesController@index');
Route::get('/articles/{id}', 'ArticlesController@show');
Route::get('/articles/{id}', 'ArticlesController@update');
И, наконец,в Vue.js
<p class="button">
<i @click.prevent="count" class="fas fa-chevron-right"></i>
</p>
data(){
return {
view: 0,
};
},
methods: {
count: function(){
axios.post("/api/articles" + this.item.id).then(response => {
this.view++;
})
window.location.href = "pages/" + this.item.id
}
}
он считает, но не обновляет столбец.также, когда я обновляю страницу, конечно, она начинает отсчитывать от 0 ... это не очень эффективный способ.Какой самый лучший и правильный способ сделать это?
Спасибо.
Не: Кстати, я получаю и перебираю api в родительском компоненте:
<div class="listWrap" :key="item.id" v-for="item in filterArticles">
<list :item="item" />
</div>