[小技巧]Laravel 關聯儲存

liaosp發表於2021-09-08

?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 協議》,轉載必須註明作者和本文連結

相關文章