[小技巧]Laravel 关联保存

laravel-relation-save

📦laravel hasOne hasMany belongsto...

github

github.com/liaoshengping/laravel-r...

Installing

$ composer require liaosp/laravel-relation-save -vvv

✈Usage

在模型中添加

use SaveRelation;

🔨如何使用

$model->save($data);

$model->saveRelation($data);

🌰 example

比如有主表store 和 store_detail

定义HasOne 关系

 public function store_detail() { 
      return $this->hasOne(\App\Models\StoreDetail::class, 'store_id', 'id'); 
 }

比如前端json 请求

{
    "name":"liaosp的店铺",
    "store_detail":{
        "address":"福建省厦门市思明区吕厝"
    }
}

创建数据简化前 (大概是这种意思)

 //一些店铺操作
 $this->store->save(); 
 $this->store_detail->store_id = $this->store->id; 
 $this->store_detail->address = $request->get('store_detail')['address'] ??''; 
 $this->store_detail->save();

我看了下Laravel-admin 的关联保存,对于快速开发的项目,觉得挺好的,值得学习。encore\laravel-admin\src\Form.php

只需如下就可以保存关联关系的数据了

$this->model->save($request->all());

$this->model->saveRelation($request->all());

适用 创建和更新 ,可参考源码,学习更多小技巧。

laravel-relation-save

✏Reference

laravel-admin

【源码分析】Laravel-admin 关联保存的原理

Contributing

You can contribute in one of three ways:

1. File bug reports using the issue tracker.
2. Answer questions or fix bugs on the issue tracker.
3. Contribute new features or update the wiki.

The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.

License

MIT

最后:各位,这种没有过滤字段的谨慎使用,虽然说很多同学都是这么干的(直接update),公司应急或者自己的项目可以用用

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

一眼就看到熟悉的地址。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
37
粉丝
16
喜欢
132
收藏
113
排名:332
访问:2.8 万
私信
所有博文
社区赞助商