我想在Laravel中创建一个排队系统,但我有编码问题,不知道如何正确设置编码。有人能帮帮我吗?
public function store(Request $request ){
$latestAntrian = Antrian::where('layanan', $this->layanan)
->where('tanggal_antrian', now()->toDateString())
->latest('id_antrian')
->first();
if (!$latestAntrian) {
if($this->layanan === 'anak'){
$this->no_antrian = 'A1';
} elseif ($this->layanan === 'ibu'){
$this->no_antrian = 'B1';
} elseif ($this->layanan === 'lansia'){
$this->no_antrian = 'C1';
}
$this->tanggal_antrian = now()->toDateString();
} else {
$kode_awal = substr($latestAntrian->no_antrian, 0, 1);
$angka = (int) substr($latestAntrian->no_antrian, 1);
$angka +=1;
$no_antrian = $kode_awal . $angka;
$tanggal_antrian = $latestAntrian->tanggal_antrian;
}
$data = new Antrian;
$data->no_antrian = ($no_antrian);
$data->nama = $request->get('nama');
$data->no_hp = $request->get('no_hp');
$data->layanan = $request->get('layanan');
$data->tanggal_antrian = ($tanggal_antrian);
$data->save();
Alert::success('Data Berhasil Ditambah');
return redirect()->route('antrianuser')->with([
'success' => 'Data Berhasil Di Tambah'
]);
}
帮助我改进这段代码
2条答案
按热度按时间pgky5nke1#
TL:TR;您将面对
Undefined variable $no_antrian
,因为该变量仅在条件的else
分支中赋值。当前代码的一些问题:
$tanggal_antrian
($queue_date
)变量仅在else
分支中赋值,在其他分支中赋值$this->$tanggal_antrian
,这就是为什么在$data->tanggal_antrian = ($tanggal_antrian);
行中遇到undefined variable
错误。我假设您打算在这两种情况下都分配局部变量。1.不知道你想通过在
$data->tanggal_antrian = ($tanggal_antrian);
行中添加括号来实现什么。不管是什么原因,这些括号在这里是毫无意义的。1.没有错误处理,这是一个坏主意->如果保存操作失败会发生什么?
1.最后,代码不是DRY(不要重复自己);存在可以重构的重复块。
我还建议你改进你的编码风格:
1.您可以混合使用命名约定(
snake_case
vscamelCase
)。坚持一个。1.我建议你不要使用非英语来命名你的变量/方法,因为这样,再加上没有PHPDoc块的事实,代码很难理解。
所以我会整理代码,大致如下(我用翻译替换了所有非英语名称,除了
Antrian
模型类,你也应该重命名为Queue
左右):不知道你用什么PHP版本,但如果8,我会取代
shoter形式:
ux6nzvsh2#
你在类属性和变量的else块中定义了$this->no_antrian。指定时:
你只使用变量,所以它可能是未定义的。
尝试在else块中更改:
签署人:
以及:
签署人: