laravel通用apiResource get update

//可以將下面的代碼放到一個(gè)class中冯丙,然后調(diào)用
xxx(Model new Goods())
$goodsModel = new Goods();
        $fillables = $goodsModel->getFillable();
        foreach( $fillables as $fillable ) {
            if( in_array($fillable , request()->all()) ) {
                $map[$fillable] = request($fillable);
            }
        }
        $goods = Goods::where($map)->select(['id' , 'name' , 'img' , 'sell_price' , 'market_price']);
        //?sortby=name&order=asc
        if( request('sortby') && request('order') ) {
            $sort = request('sortby');
            $order = request('order');
            $goods = $goods->orderBy($sort , $order);
        }
        //?limit=10&page=0
        if( request('limit') && request('page',0)>-1 ) {
            $skip = (int)request('limit') * (int)request('page');
            $take = (int)request('limit');
            $goods = $goods->skip($skip)->take($take);
        }
        $goods = $goods->get();
        return $goods;
$fills = $order->getFillable();//判斷是否設(shè)置了fillable
        $update = request()->all();
        foreach( $update as $k => $v ) {
            if( empty($fills) ) {
                if( isset($order->$k) ) {
                    $order->$k = $v;
                }
            }else{
                $order->$k = $v;
            }
        }
        $result = $order->save();
        if( !$result ) {
            return response()->json(Result::toArray([] , 1 , '操作未完成'));
        }
        return response()->json(Result::toArray($order));
<?php

namespace App\Http\Controllers\xc\api;

use App\Classes\Result;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;

/**
 * Trait CommonCRUD
 * @package App\Http\Controllers\xc\api
 */
trait CommonCRUD
{
    protected $with = [];
    protected $orderBy = '';
    protected $select = ['*'];

    public function commonIndex(Request $request , Model $model)
    {
        $sortBy = request('sortBy');
        $order = request('order');
        $limit = request('limit',10);
        $page = request('page',0);

        try {
            $map = request()->all() ? request()->all() : [];
            $model = $model->where($map);
            if( !empty($this->with) ) {
                $model = $model->with($this->with);
            }
            if( !empty($this->orderBy) ) {
                $model = $model->orderBy($this->orderBy[0] ?: $model->primaryKey , $this->orderBy[1] ?: 'asc');
            }
            if( $sortBy && $order ) {
                $model = $model->orderBy($sortBy , $order);
            }
            if( $limit && $page ) {
                $model = $model->skip($limit * $page)->take($limit);
            }
            $model = $model->select($this->select);
            $result = $model->get();
            return response()->json(Result::toArray($result));
        } catch( \Exception $e ) {
            return response()->json(Result::toArray([] , 1 , $e->getMessage()));
        }
    }

    public function commonUpdate(Request $request , Model $model)
    {
        $fills = $model->getFillable();
        $update = request()->all();
        foreach( $update as $k => $v ) {
            if( empty($fills) ) {
                if( isset($model->$k) ) {
                    $model->$k = $v;
                }
            }
            else {
                $model->$k = $v;
            }
        }
        $result = $model->save();
        if( !$result ) {
            return response()->json(Result::toArray([] , 1 , '操作未完成'));
        }
        return response()->json(Result::toArray($model));
    }

    public function commonStore(Request $request , Model $model)
    {
        $data = [];
        $fills = $model->getFillable();
        foreach( $model->getFillable() as $key ) {
            if( empty($fills) ) {
                $data[$key] = $request->$key;
            }
            else {
                if( $request->has($key) ) {
                    $data[$key] = $request->$key;
                }
            }
        }
        if( !$model::create($data) ) {
            return response()->json(Result::toArray([]));
        }
        else {
            return response()->json(Result::toArray([] , 1 , 'error'));
        }
    }

    public function commonDestroy(Request $request , Model $model)
    {
        try {
            $model->delete();
            return response()->json(Result::toArray([]));
        } catch( \Exception $e ) {
            return response()->json(Result::toArray([] , 1 , $e->getMessage()));
        }
    }
}
//調(diào)用

use CommonCRUD;
public function index(Request $request)
    {
        $this->with = ['user'];
        $this->orderBy = ['id','desc'];
        $this->select = ['id','water','user_id'];
        return $this->commonIndex($request , new WashOrder());
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艘款,一起剝皮案震驚了整個(gè)濱河市虐急,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌到踏,老刑警劉巖碑韵,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叁怪,死亡現(xiàn)場(chǎng)離奇詭異族展,居然都是意外死亡森缠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門仪缸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贵涵,“玉大人,你說(shuō)我怎么就攤上這事恰画”雒” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拴还,是天一觀的道長(zhǎng)跨晴。 經(jīng)常有香客問(wèn)我,道長(zhǎng)片林,這世上最難降的妖魔是什么端盆? 我笑而不...
    開(kāi)封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮费封,結(jié)果婚禮上焕妙,老公的妹妹穿的比我還像新娘。我一直安慰自己弓摘,他們只是感情好焚鹊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著衣盾,像睡著了一般寺旺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上势决,一...
    開(kāi)封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天阻塑,我揣著相機(jī)與錄音,去河邊找鬼果复。 笑死陈莽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的虽抄。 我是一名探鬼主播走搁,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼迈窟!你這毒婦竟也來(lái)了私植?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤车酣,失蹤者是張志新(化名)和其女友劉穎曲稼,沒(méi)想到半個(gè)月后索绪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贫悄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年瑞驱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窄坦。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唤反,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸭津,到底是詐尸還是另有隱情彤侍,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布曙博,位于F島的核電站拥刻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏父泳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一吴汪、第九天 我趴在偏房一處隱蔽的房頂上張望惠窄。 院中可真熱鬧,春花似錦漾橙、人聲如沸杆融。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)脾歇。三九已至,卻和暖如春淘捡,著一層夾襖步出監(jiān)牢的瞬間藕各,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工焦除, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留激况,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓膘魄,卻偏偏與公主長(zhǎng)得像乌逐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子创葡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容