zoukankan      html  css  js  c++  java
  • 邓Laravel2020-01-28ORM模型

    laravel  Model
    
    
    protected $table = 'order';
    
           // 白名单     只在【create】生效
            protected $fillable = [
                'order_code',
            ];
    
        
    坏:(http://james.dmzfa.com/articles/laravel-jing-hua-wen-zhang
    ---------------------

    $request
    ->session()->get('cart'); $request->input('name'); ---------------------
    好:
    session('cart'); $request->name; ---------------------
    通用语法 更短、更可读的语法
    Session::get('cart')                               session('cart')
    $request->session()->get('cart')                        session('cart')
    Session
    ::put('cart', $data)                           session(['cart' => $data])
    $request->input('name'),   Request::get('name')     $request->name,     request('name')
    return Redirect::back()                             return back()
    is_null($object->relation) ? $object->relation->id : null }       optional($object->relation)->id
    return view('index')->with('title', $title)->with('client', $client)   return view('index', compact('title', 'client'))
    $request->has('value') ? $request->value : 'default';           $request->get('value', 'default')
    Carbon
    ::now(),     Carbon::today()       now(),         today()
    App
    ::make('Class')        ------------------       app('Class')
    ->where('column', '=', 1)                     ->where('column', 1)
    ->orderBy('created_at', 'desc')                 ->latest()
    ->orderBy('age', 'desc')                     ->latest('age')
    ->orderBy('created_at', 'asc')                 ->oldest()
    ->select('id', 'name')->get()                 ->get(['id', 'name'])
    ->first()->name                         ->value('name')

    ORM 

    1.一对一  
    
    hasOne  $this->hasOne('外键的模型名称','外键的id','自己表里对应的id')
    // demo一对一    用户表里又area_id与地区表id一致  用户表和地区表
      $data = User::find(1)->area;    //  控制器
    public function area()        //  模型 { return $this->hasOne('AppCommonModelArea', 'id', 'area_id'); }
      //  返回的只是 第一个用户的地区

    belongsTo  
    $this->belongTo('外键的模型名称','外键的id','自己表里对应的id')

        $data = Area::find(142)->user;    //  控制器

        // orm
        public function user()
        {
          return $this->belongsTo('AppCommonModelUser','id','area_id');
        }

        //  返回的只是 area_id=142的第一个用户

    ---------------------------------------------
    一对多

    hasMany      模型,外键的id,自己模型的id
    $data = User::find(1)->needList;
    $data = User::find(1)->needList()->where('id','>',2)->get();
    /**
    * 获取当前用户发布的所有的需求
    *
    * @return HasMany
    * @author: deng (2020/2/17 18:53)
    */
    public function needList()
    {
    return $this->hasMany('AppCommonModelNeed','user_id','id');
    }

    【逆】

    $data = Need::find(1)->user->mobile;
    public function user()
    {
    return $this->belongsTo('AppCommonModelUser','user_id','id');
    }


    ------------------------------------------------
    获取所有的需求,并返回用户信息

    $data = Need::with(['user'])->get();

    public function user()
    {
    return $this->belongsTo('AppCommonModelUser','user_id','id');
    }


    多对多:【完】
    belongsToMany()
      /**
    * 用户拥有哪些角色(多对多)    【当前类为:管理员模型Admin 】
    *
    * @author: deng (2020-03-14 14:45)
    */
    public function role()
    {
    // belongsToMany(角色表的模型,中间的关系表,关系表中的字段外键【对应的自己的表id】,关系表中的字段外键【对应角色表的id】)
    // 取出关系表中字段
    return $this->belongsToMany(AdminRole::class,'d_admin_role_relation','admin_id','role_id')
    ->withPivot(['admin_id', 'role_id']);
    }
    Artisans

    $users = AppUser::cursor()->filter(function ($user) {
        return $user->id > 500;
    });

    /**
     * Register a binding with the container.
     *
     * @param  string|array  $abstract
     * @param  Closure|string|null  $concrete
     * @param  bool  $shared
     * @return void
     *
     * @throws Exception
     */
    public function bind($abstract, $concrete = null, $shared = false)
    {
        //
    }
    php artisan make:migration add_mobile_open_id_table  创建表

    php artisan migrate 更新表
    public function getNickNameAttribute($value)
        {
            if ($value) {
                $nick_name = htmlentities(base64_decode($value))?:'';
            } else {
                $nick_name = '未填';
            }
    
            return $nick_name;
        }

    .

    获取原数据:
    $userFind->getOriginal('avatar'))

    常用语句:

    助手函数路径
    vendorlaravelframeworksrcIlluminateSupporthelpers.php
    config('app.cdn_domain') 读取配置
    env('CDN_DOMAIN') 只在配置文件使用的读取
    $path = app_path(); 返回app路径C:wwwlaravelapp,
    $path = base_path(); 项目根目录,C:wwwlaravel
    $path = config_path();配置路径C:wwwlaravelconfig
    $path = public_path(); 返回public路径C:wwwlaravelpublic,路径函数都支持生成文件路径
    $path = resource_path('assets/sass/app.scss'); 资源路径;C:wwwlaravel
    esourcesassets/sass/app.scss
    $path = storage_path('app/file.txt');文件存储路径C:wwwlaravelstorageapp/file.txt
    
    __("lang.test") //本地化,lang是文件,配置'locale' => 'zh-CN' trans("lang.test")只翻译键
    e('<html>foo</html>') 输出源代码
     str_contains('This is my name', 'my'); 是否包含某个值
    str_limit('我是中国人', 3, '...') 截取字符串 中文3个一个汉字
    str_random(40) 随机字符串
    asset('img/photo.jpg') 生成完整包含http/https路径  secure_asset()只生成https
    url('user/profile', ['id'=>1])http://laravel.api.shanliwawa.top/user/profile/1   secure_url只生成https
    url()->full() 当前完整域名
    $cookie = cookie('name', 'value', $minutes);
    {{ csrf_field() }} 生成令牌 $token = csrf_token(); 获取令牌
    encrypt()  decrypt() 加密解密
    dump()打印变量 dd() 打印后停止
    info('Some helpful information!'); 写入日志
    logger('Debug message'); 错误写入日志
    redirect('/home'); 跳转
    $value = session('key'); session(['chairs' => 7, 'instruments' => 3]); 获取设置session
    
    use IlluminateSupportFacadesHash;
    Hash::make($request->newPassword) 加密密码
    
    助手加密解密函数,支持字符串数组对象
    encrypt() decrypt()
    
    use IlluminateSupportFacadesCrypt;无序列化加密
    $encrypted = Crypt::encryptString('Hello world.');
    $decrypted = Crypt::decryptString($encrypted);
    Crypt::encrypt() 支持字符串数组对象
    Crypt::decrypt()
    
    use IlluminateHttpRequest 是请求对象数据处理
    $request->input('title'); 获取输入
    $site = $request->input('site', 'Laravel学院'); 请求为空取后边值
    $request->input('books.0.author') 数组获取单值
    $request->json(); 返回JSON数据格式
    $request->all(); 全部
    $request->except('id');排除
    $request->only(['name', 'site', 'domain']); 只获取这些字段
     $request->has('id') 判断id字段是否存在

    数据库:

    use IlluminateSupportFacadesDB;

    ----------------
    排序:
    ->orderBy('created_at','desc')      排序

    ->first()          一行

    ->update(['status','=',1]);        更新

    ->delete();                  删除

    ---------------- DB
    ::select("select * from users where name=?",['admin']); //也支持name=:name,[':name'=>'admin']绑定,返回obj DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']); $affected = DB::update('update users set votes = 100 where name = ?', ['John']); 返回影响行数 $deleted = DB::delete('delete from users');返回影响行数 DB::statement('drop table users'); 其他无返回语句 DB::transaction(function () { 事务 DB::table('users')->update(['votes' => 1]); DB::table('posts')->delete(); }); $list = DB::table("users")->get()->toArray();//获取全部转换成数组 DB::table("users")->first() 获取一行 DB::table("users")->value('email'); 获取一个字段 DB::table("users")->pluck('email')->toArray(); 获取一列,如果设置两个pluck('name','id') id是键name是值的键值数组 count() 结果集数量 max('price')最大值 min('price')最小值 avg('price')平均数 sum('price')求和 DB::table('users')->select('name', 'email as user_email')->get(); 返回特定字段 whereRaw('price > IF(state = "TX", ?, 100)', [200]) 原生where orderBy('name', 'desc') inRandomOrder()随机排序 join('contacts', 'users.id', '=', 'contacts.user_id') 内连接 leftJoin('posts', 'users.id', '=', 'posts.user_id') 左连接 groupBy('account_id') 分组 groupBy('first_name', 'status') having('account_id', '>', 100) 刷选 take(5) 返回5条 ->offset(10) ->limit(5) 限制 insert( ['email' => 'john@example.com', 'votes' => 0]); 插入 支持多条数据 $id=DB::table("users")-> insertGetId( ['email' => 'john@example.com', 'votes' => 0]); 插入后返回id update(['votes' => 1]); 更新 increment('votes', 5);decrement('votes', 5);自增自减 increment('votes', 1, ['name' => 'John']); 支持其他字段更新 DB::table('users')->truncate(); 清空表 DB::table('users')->where('votes', '>', 100)->delete(); 删除 $users = DB::table('users')->paginate(15); 分页 $users = DB::table('users')->simplePaginate(15); 简单分页只有上一页下一页 $results->total() 总页数 <div class="container"> @foreach ($users as $user) {{ $user->name }} @endforeach </div> {{ $users->links() }}

    1.追加属性(获取器)

      protected $table = 'd_avatar';
        protected $appends = [
            'Demo'
        ];
    
        /**
         * Model追加属性
         *
         * @param  string  $value
         * @return string
         */
        public function getDemoAttribute($value)
        {
            return 'demo';
        }

        
       public function getNickNameAttribute($value)
        {
            return htmlentities(base64_decode($value));
        }
     

     模型关联

    【一对多】
      //  控制器
    public function index() { $banner = Banner::find(1); $list = $banner->bannerList; return $this->success($list); } /** * 获取轮播图列表 [一对多] */ public function bannerList() { return $this->hasMany('AppCommonModelBannerItem','banner_id','id'); }

     缓存

           $key = 'avatar_type';
            $data = Cache::get($key);
            if (!$data) {
                //  不存在时
                $minutes = 60*60*5;
                $data = AvatarType::all();
                Cache::put($key, $data, $minutes);
            }

    路由

    Route::get('/', function () {  //首页路由
        return view('welcome'); 
    });
    Route::get('about', function () { //关于我们
        return view('about'); 
    });
    Route::post('/', function () {}); 
    Route::put('/', function () {});
    Route::delete('/', function () {});
    Route::match(['get', 'post'], '/', function () {});
    Route::get('/', 'WelcomeController@index');//AppHttpControllersWelcomeController 控制器的 index 方法进行处理
    
    Route::get('user/{id}', function ($id) {//路由参数
        return "用户ID: " . $id;
    });
    
    Route::middleware('auth')->group(function () {//中间件与分组
        Route::get('dashboard', function () {
            return view('dashboard');
        });
        Route::get('account', function () {
            return view('account');
        });
    });
    
    Route::get('/task', 'TaskController@home');指向控制器的路由
    return view('home', ['tasks' => Task:all()]); //视图传递数组,Task是控制器,也可以是数组$tasks
    return view('home')->share('siteName', 'Laravel学院');//共享变量
    视图中
    <a href="{{ url('/') }}">
    路由命令与调用
    Route::get('user/{id?}', function ($id = 1) {
        return "用户ID: " . $id;
    })->name('user.profile');
    <a href="{{ route('user.profile', [100]) }}">

    OPTIONS请求

    /**
    * 设置公用响应头【此文件放置在index.php下】
    *
    * @return string
    * @author deng (2019/12/11 17:40)
    */
    function setHeader()
    {
    // 公共响应头
    header('Content-Type: Application/json');

    // 如果需要跨域,写在这里
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Headers: x-token,user-type,Origin,Access-Control-Request-Headers,SERVER_NAME,Access-Control-Allow-Headers,cache-control,token, X-Requested-With,Content-Type,Accept,Connection,User-Agent,Cookie');
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');
    }


    Route::options('/{all}', function(Request $request) {// 如果是options请求,直接响应 if (request()->method() == 'OPTIONS') { return response()->json([ 'code' => 200, 'message' => 'OPTIONS', 'data' => 'OPTIONS', ]); } })->where(['all' => '([a-zA-Z0-9-]|/)+']);

    Storage文件存储 上传文件

    $request->file()->store()  快速存储图片

    路径:storage/public目录下

    ------------

    1、获取上传的文件

    $file=$request->file('file');
    2、获取上传文件的文件名(带后缀,如abc.png)

    $filename=$file->getClientOriginalName();
    3、获取上传文件的后缀(如abc.png,获取到的为png)

    $fileextension=$file->getClientOriginalExtension();
    4、获取上传文件的大小

    $filesize=$file->getClientSize();
    5、获取缓存在tmp目录下的文件名(带后缀,如php8933.tmp)

    $filaname=$file->getFilename();
    6、获取上传的文件缓存在tmp文件夹下的绝对路径

    $realpath=$file->getRealPath();
    7、将缓存在tmp目录下的文件移到某个位置,返回的是这个文件移动过后的路径

    $path=$file->move(path,newname);
    move()方法有两个参数,第一个参数是文件移到哪个文件夹下的路径,第二个参数是将上传的文件重新命名的文件名

    8、检测上传的文件是否合法,返回值为true或false

    $file->isValid()

     打印sql

    DB::connection()->enableQueryLog();  // 开启QueryLog
    AppUser::find(1);
    dump(DB::getQueryLog());

    .

    $data = User::find(1)->area;
  • 相关阅读:
    ubuntu 安装 库文件
    java接口定义的静态方法和默认如何在类实现的时候使用
    通过java的i/o机制进行图片流的存储以及对网络图片的存储
    java的两种冒泡算法
    Java的Integer和int有什么区别
    使用jq的ajax实现对xml文件的读取
    typescript中的工具 tsd
    使用reactjs遇到Warning: setState(...): Can only update a mounted or mounting component.
    在create-react-app的脚手架里面使用scss
    使用fetch-jsonp进行跨域以及参数的传递
  • 原文地址:https://www.cnblogs.com/vip-deng-vip/p/12220904.html
Copyright © 2011-2022 走看看