owladmin 表单增删改查对应模型增删改查
xuexi 2026-04-22 13:35:55 发表在:PHP 查看数:6

前端代码

/*选择*/
            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
知识库:447条鸣谢:TAY  备案号:蜀ICP备2024090044号