Я хотел бы изменить статус своего логического значения в моем msql5.7, когда я нажимаю кнопку в моем представлении.
Я хочу, чтобы, когда я нажимаю на свою кнопку, значение моего логического значения переключается (переключается между 0 и 1)
Вот мой код ajax (мой Dashboard.blade.php)
function reply_click(clicked_id){
$(function() {
$('#openButton').on('click', function(data) {
$.get("test.php", {clicked_id);
});
});
}
мой DashboardController.php
class DashboardController extends Controller
{
public function index() {
return view('dashboard');
}
}
мой файл миграции
public function up()
{
Schema::create('chaves',function (Blueprint $table){
$table -> increments('id');
$table -> string('nome');
$table -> boolean('alugado');
$table -> timestamps();
});
}
мой маршрут
Route::get("dashboard", "DashboardController@index")->name("dashboard")->middleware('auth');
@JamesRiady, именно так !!
$(document).on('click', '.update', function() {
var user_id = $(this).attr("id");
function () {
$.ajax({
url: "{!! url('your_url' ) !!}" + "/" +id,
method: "POST",
data: {id: id, "_token": "{{ csrf_token() }}", _method: 'PATCH'},
success: function (data) {
}
});
},
function () {
return false;
});
});
Считаю, что решение находится на уровне контроллера.
JQuery
function reply_click(clicked_id){
$(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
}
});
$('#openButton').on('click', function(data) {
$.ajax({
type: "PATCH",
url: "/dashboard"
})
.done(function(data){
console.info(data);
})
.fail(function(data){
console.info('Error:', data);
});
});
});
}
Контроллер
use App\Chave; //use this if you have model
use Illuminate\Support\Facades\DB; //use this if you don't have model
class DashboardController extends Controller
{
public function index() {
$dashboard = Chave::first(); //use this if you have model
$dashboard = DB::table('chaves')->first();
$dashboard->alugado = 1;
$dashboard->save();
return view('dashboard');
}
}
Маршрутизатор
Route::patch("dashboard", "DashboardController@index")->name("dashboard")->middleware('auth');
Я думаю, что вам нужно использовать метод Patch, а не использовать Get в вашем маршрутизаторе .. потому что в этом случае вы пытаетесь выполнить обновление, но не обновите все ..
Метод Put используется для частичного обновления ресурса
Я получил ошибку синхронизации: Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpE xception, я считаю, что это связано с методом исправления
Я добавил в свой код ajaxsetup ... давай попробуем еще раз
давайте попробуем сделать return response()->json($dashboard);
ниже $dashboard = Dashboard::first();
и посмотрим, что он вернет
как насчет изменения метода на получение?
Хорошо, я изменил method type: "PATCH"
на type: "GET"
и перешел на Route :: get
, поэтому я получил еще одну ошибку в моем DashboardController.php -> 'Class' App \ Http \ Controllers \ Dashboard 'not found »
в этой строке -> $dashboard = Dashboard::first();
почему вы меняете название модели на Dashboard
.. посмотрите на мой ответ .. Я поменяю его на Chave
.. когда вы делаете миграцию, вы тоже должны сделать модель .. имя модели совпадает с именем миграции .. когда вы название миграции - chaves
, название вашей модели должно быть Chave
.
У меня нет модели, я только что создал файл миграции. import App\Chave;
возвращает ошибку от моего контроллера -> {"resource": "/app/Http/Controllers/DashboardController.php", -> syntax error, unexpected 'App' (T_STRING),
возможно, вам следует начать с начала ... удалите созданную вами модель и удалите миграцию ... затем сделайте это в командной строке php artisan make: model Chave
. Это создаст модель и миграцию, затем введите свое поле в файл миграции и перенесите его .. и попробуйте снова запустить свой код.
Если вы не хотите использовать модель ... посмотрите мой код еще раз .. Я добавлю свой код
Я создал пустой шаблон, как вы мне советовали, и он сработал, я смог изменить значение первого поля в моей таблице, спасибо!
вы имеете в виду, что если вы нажмете кнопку .. логическое значение в вашей таблице БД изменится? или что?