Laravel 存在关联模型的增删改的简单写法

基本逻辑稍微复杂一点点的,增删改查,都会用到关联模型 ORM ,以前总是,写得比较随心所欲,突然想总结一下,比较简单的写法,用来常用。

1、新增

场景:有一个很多数据的表单,因为数据太多,所以可能会将数据分为两张表,甚至更多,然后通过 表id进行关联。

这里拿 塔机数据登记 举例子

public function store(CraneRequest $crane)
{
    // 将 基础数据添加到 crane 表
    // 这里之所以可以直接用 all() 方法,因为模型的白名单 fillable 属性
    $crane = Crane::create($request->all());    // create 方法 返回新增的模型对象
    
    // 给黑匣子表 添加数据, 黑匣子表示属于crane 的附表 用crane_id 关联着。
    // 将 crane_id 添加到 $request 里
    $request->merge(['crane_id' => $crane->id]);
    BlackBox::create($request->all());  // 这里同样用 白名单。
}
复制代码

好处是 代码简洁, 充分利用白名单的优势。

2、编辑

场景:还是以上的新增图片的编辑

public function edit(Crane $crane) 
{
    // 利用模型对象的fill方法,直接加入关联的数据,避免用with,如果是后台模版渲染可以忽略。
    $crane->fill(['blackBox' => $crane->blackBox]);
    
    return $crane;
}
复制代码
3、删除

场景:删除前端传来的id数组,并删除对应的关联表数据。

public function destroy(Request $request)
{
    Crane::destroy($request->id);
    
    BlackBox::whereIn('crane_id', $request->id)->delete();
    
    return ...
}
复制代码

这个删除可以勾选多个删除,也可以单选删除。不过感觉还不够简洁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值