坏:(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

.一对一  

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

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

    // orm
    public function user()
    {
      return $this->belongsTo('App\Common\Model\User','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('App\Common\Model\Need','user_id','id');
}
【逆】
$data = Need::find(1)->user->mobile;
public function user()
{
return $this->belongsTo('App\Common\Model\User','user_id','id');
}

------------------------------------------------
获取所有的需求,并返回用户信息
$data = Need::with(['user'])->get();
public function user()
{
return $this->belongsTo('App\Common\Model\User','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 = App\User::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'))

常用语句:

助手函数路径
\vendor\laravel\framework\src\Illuminate\Support\helpers.php
config('app.cdn_domain') 读取配置
env('CDN_DOMAIN') 只在配置文件使用的读取
$path = app_path(); 返回app路径C:\www\laravel\app,
$path = base_path(); 项目根目录,C:\www\laravel
$path = config_path();配置路径C:\www\laravel\config
$path = public_path(); 返回public路径C:\www\laravel\public,路径函数都支持生成文件路径
$path = resource_path('assets/sass/app.scss'); 资源路径;C:\www\laravel\resources\assets/sass/app.scss
$path = storage_path('app/file.txt');文件存储路径C:\www\laravel\storage\app/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 Illuminate\Support\Facades\Hash;
Hash::make($request->newPassword) 加密密码 助手加密解密函数,支持字符串数组对象
encrypt() decrypt() use Illuminate\Support\Facades\Crypt;无序列化加密
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted);
Crypt::encrypt() 支持字符串数组对象
Crypt::decrypt() use Illuminate\Http\Request 是请求对象数据处理
$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 Illuminate\Support\Facades\DB;

----------------
排序:
->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('App\Common\Model\BannerItem','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');//App\Http\Controllers\WelcomeController 控制器的 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' => ,
'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
\App\User::find();
dump(DB::getQueryLog());

.

$data = User::find(1)->area;

邓Laravel2020-01-28的更多相关文章

  1. 详解H264视频格式-2016.01.28

    专业名词解释 VCL(Video Coding Layer)视频编码层 NAL(Network Abstraction Layer)网络提取层 SPS(Sequence Parameter Set) ...

  2. NodeJS 学习总结 01 安装配置

    1 安装NodeJS 具体参考已发布的文章Ubuntu学习总结-07 Nodejs和npm的安装 2 使用淘宝 NPM 镜像 国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像 ...

  3. 快递鸟顺丰物流api接口对接多种方法整理

    目前很多自营电商平台.ERP系统.仓储系统.快递柜企业,对物流模块数据需求还是比较旺盛的.之前有介绍过简单的接口对接方法,这次给大家整理介绍两种快递数据的获取方法. 接口秘钥可以向顺丰公司申请,或者一 ...

  4. 论战大数据----胖子哥的PK之旅(一)

    胖子哥(1106110976) 9:35:36 http://www.cnblogs.com/hadoopdev/p/3531963.htmlnosqlt数据库-肖(380594863) 9:38:0 ...

  5. 【转】关于HTTP中文翻译的讨论

    http://www.ituring.com.cn/article/1817 讨论参与者共16位: 图灵谢工 杨博 陈睿杰 贾洪峰 李锟 丁雪丰 郭义 梁涛 吴玺喆 邓聪 胡金埔 臧秀涛 张伸 图钉派 ...

  6. 调用第三方物流公司API即时查询物流信息

    主要是利用快递鸟提供的物流服务,通过对接快递鸟的API,调用即时查询接口,获取物流信息. 这里采用java语言,调用快递鸟的接口为例.步骤如下: 1.首先,得去快递鸟的官方网站注册一个账号并进行实名认 ...

  7. JAVA通信系列三:Netty入门总结

    一.Netty学习资料 书籍<Netty In Action中文版> 对于Netty的十一个疑问http://news.cnblogs.com/n/205413/ 深入浅出Nettyhtt ...

  8. SQLServer 2016安装时的错误:Polybase要求安装Oracle JRE 7更新51或更高版本

    异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html 水印就不加了,在老家~(另一篇文章好像没发布成功,简单说下,2016安装完毕是 ...

  9. 基于redis 实现分布式锁的方案

    在电商项目中,经常有秒杀这样的活动促销,在并发访问下,很容易出现上述问题.如果在库存操作上,加锁就可以避免库存卖超的问题.分布式锁使分布式系统之间同步访问共享资源的一种方式 基于redis实现分布式锁 ...

  10. JavaScript系列文章:不能不看的数据类型检测

    由于JavaScript是门松散类型语言,定义变量时没有类型标识信息,并且在运行期可以动态更改其类型,所以一个变量的类型在运行期是不可预测的,因此,数据类型检测在开发当中就成为一个必须要了解和掌握的知 ...

随机推荐

  1. 创建dynamics CRM client-side (十三) - 在HTML Web Resource中获取form elements & 获取外部js文件

    上一节我们讨论到创建HTML Web Resource. 但是纯HTML的页面不能满足我们的需求, 所以今天我们来做在HTML Web Resource中获取form elements Please ...

  2. Hbase与Maven工程的Spring配置笔记

    1.HBase基本操作 hbase shell: 连接到正在运行的HBase实例 help: 显示一些基本的使用信息以及命令示例. 需要注意的是: 表名, 行, 列都必须使用引号括起来 create ...

  3. php--->自己封装的简易版mvc框架

    最近根据自己的理解,封装了一个自己的框架,来重新系统化梳理自己对mvc框架的理解:后续会陆续添加各种新的功能. 欢迎指点交流. GitHub:https://github.com/Frankltf/m ...

  4. 什么是 Trait

    Trait 是从 PHP 5.4 加入的一种细粒度代码复用的语法.以下是官方手册对 Trait 的描述: Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制.Trait 为了减少单继承 ...

  5. 024.Python模块OS模块

    一 OS模块 对系统进行操作 1.1 popen 可以把运行的结果,这个字符串转化成utf-8这样的编码格式在进行输出 import os res = os.popen("ifconfig& ...

  6. vscode下搭建vue.js开发环境(基于最新的@Vue/cli 4.2.2)

    2020-02-13. 网上的那些怎么安装vue环境的2.x就不要再看了,都过时了,现在去官网下载,按照他们的设置各种问题.接下来看下最新的安装方法. 前四步是一样的: 1.下载并安装vscode 2 ...

  7. POJ_2479_DP

    http://poj.org/problem?id=2479 从前向后保存起点到每一点的最长串,从后向前保存尾点到每一点的最长串. 然后枚举中断点,找前后和最大值就行了. #include<io ...

  8. Elasticsearch与中文分词配置

    一. elasticsearch on windows 1.下载地址: https://www.elastic.co/cn/downloads/elasticsearch 如果浏览器下载文件慢,建议使 ...

  9. CVE-2019-0232:Apache Tomcat RCE复现

    CVE-2019-0232:Apache Tomcat RCE复现 0X00漏洞简介 该漏洞是由于Tomcat CGI将命令行参数传递给Windows程序的方式存在错误,使得CGIServlet被命令 ...

  10. react项目中引用amap(高德地图)坑

    最近在写一个react项目,用到了需要定位的需求,于是乎自己决定用高德地图(AMap),但是react官方文档的案列很少,大多都是原生JS的方法. 在调用amap的 Geocoder Api 时,一直 ...