owladmin 表单增删改查对应模型增删改查
前端代码
/*选择*/
amis()->SelectControl('zhuowei_id', '桌位')
->required()
// 核心:直接用模型查询,pluck(显示文字, 提交值)
->options(Zhuowei::where('status',0)->orderBy('id', 'desc')->pluck('name', 'id'))
->placeholder('请选择桌位'),
/*选项结束*/
因为owladmin使用了批量删除机制,laravel模型不会执行删除,所以要重写destroy方法,不使用集成的方法
// 🔥 重写删除方法,触发模型事件
public function destroy($id)
{
// 处理单条/批量删除ID
$ids = collect(explode(',', $id))->filter();
// 循环逐个删除 → 触发模型事件,释放桌位
foreach ($ids as $v) {
$item = \App\Models\Zuoweiyuding::find($v);
if ($item) {
$item->delete();
}
}
// ✅ OwlAdmin 官方唯一正确的响应格式(永不报错)
return $this->response()->success();
}
对应模型写法
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes;
use Slowlyo\OwlAdmin\Models\BaseModel as Model;
/**
* 座位预定
*/
class Zuoweiyuding extends Model
{
use SoftDeletes;
protected $table = 'zuoweiyuding';
// 关联分类模型
public function zhuoweigl()
{
// 参数:分类模型类名 , 你的外键字段名
return $this->belongsTo(\App\Models\Zhuowei::class, 'zhuowei_id');
}
/**
* 模型启动事件:自动处理桌位状态
*/
protected static function booted()
{
// 1. 创建预定:占用桌位
static::created(function ($order) {
if ($order->zhuowei_id) {
Zhuowei::where('id', $order->zhuowei_id)->update(['status' => 1]);
}
});
// 2. 更新预定:切换桌位(释放旧的,占用新的)
static::updated(function ($order) {
// 仅当桌位ID发生变化时执行
if ($order->isDirty('zhuowei_id')) {
$oldZhuoweiId = $order->getOriginal('zhuowei_id'); // 修改前的桌位ID
$newZhuoweiId = $order->zhuowei_id; // 修改后的桌位ID
// 释放旧桌位
if ($oldZhuoweiId) {
Zhuowei::where('id', $oldZhuoweiId)->update(['status' => 0]);
}
// 占用新桌位 ✅ 修复了变量名错误
if ($newZhuoweiId) {
Zhuowei::where('id', $newZhuoweiId)->update(['status' => 1]);
}
}
});
// 3. 删除预定:释放桌位(软删除也会触发)
static::deleted(function ($order) {
if ($order->zhuowei_id) {
Zhuowei::where('id', $order->zhuowei_id)->update(['status' => 0]);
}
});
}
//**//
}
最近访问时间:2026-04-22 20:03:51