Laravel, если идентификатор существует, обновить запись - PullRequest
0 голосов
/ 07 октября 2019

Я хочу установить условие, если учитель уже существует в базе данных, затем обновить запись, если id не существует, добавить запись в базу данных. Как я могу достичь этого с помощью Ajax в Laravel?

Update.js:

jQuery(document).ready(function($)  {
$('#update-data').on('click',function(){
alert("ok");
        $.ajax({
            type: "POST",
            url: "teachers/" + $('#update-data').attr("value"),
            dataType: 'json',
            headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
            data : $(this).serialize(),
            beforeSend: function() {

    },
            success: function (data) {
                    alert("ok");
            },
        });
    });
});

Store.Js:

jQuery(document).ready(function($)  {

    $("#add-data").submit(function (e) {

        $.ajax({
            type: "POST",
            url: "teachers",
            dataType: 'json',
            headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
            data:  $(this).serialize(),
                success: function (data) {
                    alert("Added");
                    data.responseJSON;
                    refreshTable();

            },
        });
    });
});

Обновление контроллера:

public function update(TeacherRequest $request, $id)
    {
        $teacher = Teacher::find($id);
  if($teacher->save()){
                    return response()->json([
                        'status' => 'success',
                        'msg' => 'esecond has been updated'
                    ]);
                }
    }

Хранение контроллера:

public function store(Request $request)
{
$teacher = new Teacher;
$teacher=teacher::create($request);
}

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Существует специальный метод для этого

$teacher = Teacher::firstOrCreate($id, [
// Pass data here
]);

И если вы хотите проверить вручную и перевести запрос к другому методу

public function update(TeacherRequest $request, $id)
{
  $teacher = Teacher::find($id);
  if (is_null($teacher)) { // If model not found, pass request to store method
     $this->store($request);
  }

  if($teacher->save()){
     return response()->json([
            'status' => 'success',
             'msg' => 'esecond has been updated'
      ]);
  }
}

Из документов

Надеюсь, это поможет

0 голосов
/ 07 октября 2019

Eloquent предоставляет метод updateOrCreate, чтобы вы могли обновить или создать запись.

$teacher = Teacher::updateOrCreate([
    // attributes to search for
    'name' => 'Test Teacher',
], [
    // values
    'grade' => 6,
]);

Это позволит найти учителя с именем «Test Teacher» и обновить класс до 6 или создать нового учителя сНазовите «Преподаватель теста» и установите оценку 6. 6. 1005 *

«Вы также можете столкнуться с ситуациями, когда вы хотите обновить существующую модель или создать новую модель, если ее не существует. Laravel предоставляет updateOrCreateметод для выполнения этого за один шаг. Как и метод firstOrCreate, updateOrCreate сохраняет модель ... "- Документы Laravel 6.0 - Eloquent - Другие методы создания - updateOrCreate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...