[小技巧]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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
未填写
文章
38
粉丝
16
喜欢
144
收藏
134
排名:319
访问:3.0 万
私信
所有博文
社区赞助商