【问题标题】:"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'“SQLSTATE [42S22]:找不到列:1054 'where 子句'中的未知列 'id'
【发布时间】:2021-11-08 17:12:52
【问题描述】:

单击提交按钮编辑数据时出现错误。 我的错误:

"SQLSTATE[42S22]: 找不到列: 1054 'where 子句'中的未知列 '5' (SQL: select * from users where (5 is null and role = siswa and name =汤姆和email = tom@gmail.com和email_verified_at = 2021年9月13日11时35分17秒和password = $ 2Y $ 10 $ O5iNeRK0MM4PsRSW27KeMezkVYMZqgfJOXJW35zuh3Ve5lDi7buf2和remember_token = PGLP0c51ArZHLHRzpGM8NYSlRofQ6umTq4rFaRGRr0ZnD7MtP7gmtBTdL7tX)极限1)“

我的控制器

public function store(Request $request)
{
    
    $user = User::updateOrCreate([
        [
            'id' => $request->id,
        ],
            'role' => 'siswa',
            'name' => $request->nama_depan,
            'email' => $request->email,
            'email_verified_at' => now(),
            'password' => bcrypt('rahasia'),
            'remember_token' => Str::random(60),
        ]);

    $siswa = Siswa::updateOrCreate(['user_id'=>$user->id, 'id'=>$request->id],
    [
        'nama_depan' => $request->nama_depan,
        'nama_belakang' => $request->nama_belakang,
        'jenis_kelamin' => $request->jenis_kelamin,
        'agama' => $request->agama,
        'alamat' => $request->alamat,
        'avatar' => $request->avatar,
    ]); 

    if($request->hasfile('avatar')) {
        $request->file('avatar')->move('images/', $request->file('avatar')->getClientOriginalName());
        $siswa->avatar = $request->file('avatar')->getClientOriginalName();
        $siswa->save();
    }
    
    return json_encode(array(
        "statusCode"=>200
    ));
}

public function edit($id, Request $request)
{
    $this->validate($request, [
        'avatar' => 'mimes:jpg,png'
    ]);

    // $where = array('users.id' => $id);
    $siswa = Siswa::select(

        "siswa.id", 
        "siswa.nama_depan",
        "siswa.nama_belakang", 
        "siswa.jenis_kelamin", 
        "users.email as email",
        "siswa.agama",
        "siswa.alamat"

    )

    ->join('users', 'users.id', '=', 'siswa.user_id')
    ->where('siswa.id', $id)
    ->first();
    
    if($request->hasfile('avatar')) {
        $request->file('avatar')->move('images/', $request->file('avatar')->getClientOriginalName());
        $siswa->avatar = $request->file('avatar')->getClientOriginalName();
        $siswa->update();
    }

    return response()->json($siswa);
}

我的模特

public function user()
{
    return $this->belongsTo(User::class);
}

 public function siswa()
{
    return $this->hasOne(Siswa::class);
}

jQuery 代码

// /TOMBOL EDIT DATA PER PEGAWAI DAN TAMPIKAN DATA BERDASARKAN ID PEGAWAI KE MODAL
//ketika class edit-post yang ada pada tag body di klik maka
$('body').on('click', '.edit-siswa', function () {
    var data_id = $(this).data('id');
    $.get('siswa/' + data_id + '/edit', function (data) {
        console.log(data);
        $('#modal-judul').html("Edit Siswa");
        $('#btn-simpan').val("edit-siswa");
        $('#tambahModal').modal('show');
        //set value masing-masing id berdasarkan data yg diperoleh dari ajax get request diatas               
        $('#id').val(data.id);
        $('#user_id').val(data.user_id);
        $('#nama_depan').val(data.nama_depan);
        $('#nama_belakang').val(data.nama_belakang);
        $('#jenis_kelamin').val(data.jenis_kelamin);
        $('#email').val(data.email);
        $('#agama').val(data.agama);
        $('#alamat').val(data.alamat);
    })
});

//SIMPAN & UPDATE DATA DAN VALIDASI (SISI CLIENT)
//jika id = formSiswa panjangnya lebih dari 0 atau bisa dibilang terdapat data dalam form tersebut maka
//jalankan jquery validator terhadap setiap inputan dll dan eksekusi script ajax untuk simpan data
if ($("#formSiswa").length > 0) {
    $("#formSiswa").validate({
        submitHandler: function (form) {
            var actionType = $('#btn-simpan').val();
            $('#btn-simpan').html('Sending..');
            $.ajax({
                data: $('#formSiswa')
                    .serialize(), //function yang dipakai agar value pada form-control seperti input, textarea, select dll dapat digunakan pada URL query string ketika melakukan ajax request
                url: "{{ route('siswa.store') }}", //url simpan data
                type: "POST", //karena simpan kita pakai method POST
                dataType: 'json', //data tipe kita kirim berupa JSON
                success: function (data) { //jika berhasil 
                    $('#formSiswa').trigger("reset"); //form reset
                    $('#tambahModal').modal('hide'); //modal hide
                    $('#btn-simpan').html('Simpan'); //tombol simpan
                    var oTable = $('#table-siswa').dataTable(); //inialisasi datatable
                    oTable.fnDraw(false); //reset datatable
                    toastr.success({ //tampilkan iziToast dengan notif data berhasil disimpan pada posisi kanan bawah
                        title: 'Data Berhasil Disimpan',
                        message: '{{ Session('
                        success ')}}',
                        position: 'bottomRight'
                    });
                },
                error: function (data) { //jika error tampilkan error pada console
                    console.log('Error:', data);
                    $('#btn-simpan').html('Simpan');
                }
            });
        }
    })
}

【问题讨论】:

  • 你在 updateOrCreate 中添加了额外的 [ $user

标签: php jquery laravel laravel-8


【解决方案1】:

你需要作为数组传递

updateOrCreate([条件],[值])

       public function store(Request $request)
       {

           $user = User::updateOrCreate(
               [
                   'id' => $request->id,
               ],[
                   'role' => 'siswa',
                   'name' => $request->nama_depan,
                   'email' => $request->email,
                   'email_verified_at' => now(),
                   'password' => bcrypt('rahasia'),
                   'remember_token' => Str::random(60),
                  ]
               );
       }

【讨论】:

  • 你能告诉我有什么区别吗?
  • 如果您回答,您应该始终解释您所做的更改以及为什么这是解决方案。只贴代码或许能解决问题,但没人能从中吸取教训。
猜你喜欢
  • 2021-03-29
  • 2023-04-07
  • 2019-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 2020-06-08
  • 1970-01-01
相关资源
最近更新 更多