美文网首页
laravel通用apiResource get update

laravel通用apiResource get update

作者: IT宝哥哥 | 来源:发表于2019-06-25 15:29 被阅读0次
    //可以将下面的代码放到一个class中,然后调用
    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();//判断是否设置了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()));
            }
        }
    }
    //调用
    
    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());
    }
    

    相关文章

      网友评论

          本文标题:laravel通用apiResource get update

          本文链接:https://www.haomeiwen.com/subject/dmztcctx.html