I have a data problem where $data does not enter the pemesanan table. I have done dd($data)
and the data is in array form. when I do $PemesananModel->save($data)
, the data is not inserted to the database. Please help me
Controller
Data is sent from product1() to view and and from the view sent to add_pesan
public function produk1()
{
$model = new ProdukModel();
$pemesananModel = new PemesananModel();
$data['getProduk'] = $model->getData();
$data['cart'] = ConfigServices::cart();
$noAntrian = $pemesananModel->generateNoAntrian();
$idKaryawan = 1;
$idPemesan = "P" . date('md') . rand(3, 1);
$data['id_pemesan'] = $idPemesan;
$data['id_pelanggan'] = session()->get('id_pelanggan');
$data['id_karyawan'] = $idKaryawan;
$data['no_antrian'] = $noAntrian;
$data['tgl'] = date('Y-m-d');
$data['status_pembayaran'] = "cash";
$data['status_pemesanan'] = 'Dalam Antrian';
$data['nama_pelanggan'] = session()->get('nama_pelanggan');
$data['no_hp'] = session()->get('no_hp');
echo view('user/produk', $data);
}
public function add_pesan()
{
$pemesananModel = new PemesananModel();
$id_pemesan = $this->request->getPost('id_pemesan');
$id_pelanggan = (int)session()->get('id_pelanggan');
$id_karyawan = 1;
$noAntrian = (int)$pemesananModel->generateNoAntrian();
$tgl = $this->request->getPost('tgl');
$status_pembayaran = $this->request->getPost('status_pembayaran');
$status_pemesanan = $this->request->getPost('status_pemesanan');
$data = [
'id_pemesan' => $id_pemesan,
'id_pelanggan' => $id_pelanggan,
'id_karyawan' => $id_karyawan,
'no_antrian' => $noAntrian,
'tgl' => $tgl,
'status_pembayaran' => $status_pembayaran,
'status_pemesanan' => $status_pemesanan
];
log_message('info', 'Data to be saved: ' . print_r($data, true));
if ($pemesananModel->save($data)) {
session()->setFlashdata('pesan', 'Berhasil Pesan');
} else {
$errors = $pemesananModel->errors();
log_message('error', 'Failed to save data: ' . print_r($errors, true));
session()->setFlashdata('error', 'Gagal Pesan: ' . implode(', ', $errors));
}
return redirect()->to('/produk1');
}
View
Data received from product1 and sent to add_pesan
<form action="/add_pemesanan" method="post">
<input type="hidden" name="id_pemesan" value="<?= $id_pemesan ?>" class="hidden">
<input type="hidden" name="id_pelanggan" value="<?= $id_pelanggan ?>" class="hidden">
<input type="hidden" name="id_karyawan" value="<?= $id_karyawan ?>" class="hidden">
<input type="hidden" name="no_antrian" value="<?= $no_antrian ?>" class="hidden">
<input type="hidden" name="tgl" value="<?= $tgl ?>" class="hidden">
<input type="hidden" name="status_pembayaran" value="<?= $status_pembayaran ?>" class="hidden">
<input type="hidden" name="status_pemesanan" value="<?= $status_pemesanan ?>" class="hidden">
<button type="submit" id="cartIcon" class="flex items-center p-4 bg-indigo-500 text-white font-semibold rounded hover:bg-indigo-600">
<i class="fas fa-shopping-cart"><?= $all_item; ?></i>
</button>
</form>
Model
<?php
namespace AppModels;
use CodeIgniterModel;
class PemesananModel extends Model
{
protected $table = 'pemesanan';
protected $primaryKey = 'id_pemesan';
protected $allowedFields = [
'id_pemesan',
'id_pelanggan',
'id_karyawan',
'no_antrian',
'tgl',
'status_pembayaran',
'status_pemesanan'
];
public function generateNoAntrian()
{
$lastOrder = $this->orderBy('id_pemesan', 'DESC')->first();
if ($lastOrder) {
$lastNoAntrian = (int)substr($lastOrder['no_antrian'], 2);
$newNoAntrian = $lastNoAntrian + 1;
} else {
$newNoAntrian = 1;
}
return str_pad($newNoAntrian, 4, '0', STR_PAD_LEFT);
}
public function getData($id = false)
{
$builder = $this->db->table($this->table);
$builder->select('pemesanan.no_antrian, pelanggan.no_hp AS no_hp, pemesanan.tgl, pemesanan.status_pembayaran, pemesanan.status_pemesanan, pelanggan.nama_pelanggan AS nama_pelanggan, karyawan.nama AS nama_karyawan');
$builder->join('pelanggan', 'pelanggan.id_pelanggan = pemesanan.id_pelanggan');
$builder->join('karyawan', 'karyawan.id_karyawan = pemesanan.id_karyawan');
if ($id !== false) {
$builder->where('pemesanan.id_pemesan', $id);
}
$query = $builder->get();
return $query->getResult();
}
public function getData_for_pelanggan($id = false)
{
if ($id === false) {
return $this->findAll();
} else {
return $this->getWhere(['id_pemesan' => $id]);
}
}
}
Routes
$routes->get('/produk1', 'AdminController::produk1');
$routes->match(['get', 'post'], '/add_pemesanan', 'AdminController::add_pesan');
Database
enter image description here
1