Laravel框架数据库CURD操作、连贯操作总结

Laravel框架数据库CURD操作、连贯操作总结

这篇文章主要介绍了Laravel框架数据库CURD操作、连贯操作、链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下

Laravel框架数据库CURD操作、连贯操作总结

一、Selects

检索表中的所有行


复制代码 代码如下:

$users = DB::table(‘users’)->get();

foreach ($users as $user)

{

var_dump($user->name);

}

从表检索单个行


复制代码 代码如下:

$user = DB::table(‘users’)->where(‘name’, ‘John’)->first();

var_dump($user->name);

检索单个列的行


复制代码 代码如下:

$name = DB::table(‘users’)->where(‘name’, ‘John’)->pluck(‘name’);

检索一个列值列表


复制代码 代码如下:

$roles = DB::table(‘roles’)->lists(‘title’);

该方法将返回一个数组标题的作用。你也可以指定一个自定义的键列返回的数组


复制代码 代码如下:

$roles = DB::table(‘roles’)->lists(‘title’, ‘name’);

指定一个Select子句


复制代码 代码如下:

$users = DB::table(‘users’)->select(‘name’, ’email’)->get();

 $users = DB::table(‘users’)->distinct()->get();

 $users = DB::table(‘users’)->select(‘name as user_name’)->get();

Select子句添加到一个现有的查询$query = DB::table(‘users’)->select(‘name’);


复制代码 代码如下:

$users = $query->addSelect(‘age’)->get();

where


复制代码 代码如下:

$users = DB::table(‘users’)->where(‘votes’, ‘>’, 100)->get();

OR


复制代码 代码如下:

$users = DB::table(‘users’)->where(‘votes’, ‘>’, 100)->orWhere(‘name’, ‘John’)->get();

Where Between


复制代码 代码如下:

$users = DB::table(‘users’)->whereBetween(‘votes’, array(1, 100))->get();

Where Not Between


复制代码 代码如下:

$users = DB::table(‘users’)->whereNotBetween(‘votes’, array(1, 100))->get();

Where In With An Array


复制代码 代码如下:

$users = DB::table(‘users’)->whereIn(‘id’, array(1, 2, 3))->get();

$users = DB::table(‘users’)->whereNotIn(‘id’, array(1, 2, 3))->get();

Using Where Null To Find Records With Unset Values


复制代码 代码如下:

$users = DB::table(‘users’)->whereNull(‘updated_at’)->get();

Order By, Group By, And Having


复制代码 代码如下:

$users = DB::table(‘users’)->orderBy(‘name’, ‘desc’)->groupBy(‘count’)->having(‘count’, ‘>’, 100)->get();

Offset & Limit


复制代码 代码如下:

$users = DB::table(‘users’)->skip(10)->take(5)->get();

二、连接

Joins

查询构建器也可以用来编写连接语句。看看下面的例子:

Basic Join Statement


复制代码 代码如下:

DB::table(‘users’)

  ->join(‘contacts’, ‘users.id’, ‘=’, ‘contacts.user_id’)

  ->join(‘orders’, ‘users.id’, ‘=’, ‘orders.user_id’)

  ->select(‘users.id’, ‘contacts.phone’, ‘orders.price’)

  ->get();

左连接语句


复制代码 代码如下:

DB::table(‘users’)

  ->leftJoin(‘posts’, ‘users.id’, ‘=’, ‘posts.user_id’)

  ->get();

  DB::table(‘users’)

  ->join(‘contacts’, function($join)

  {

  $join->on(‘users.id’, ‘=’, ‘contacts.user_id’)->orOn(…);

  })

  ->get();

  DB::table(‘users’)

  ->join(‘contacts’, function($join)

  {

  $join->on(‘users.id’, ‘=’, ‘contacts.user_id’)

  ->where(‘contacts.user_id’, ‘>’, 5);

  })

  ->get();

三、分组

  有时候,您可能需要创建更高级的where子句,如“存在”或嵌套参数分组。Laravel query builder可以处理这些:


复制代码 代码如下:

DB::table(‘users’)

->where(‘name’, ‘=’, ‘John’)

->orWhere(function($query)

{

$query->where(‘votes’, ‘>’, 100)

->where(‘title’, ‘<>’, ‘Admin’);

})

->get();

  上面的查询将产生以下SQL:


复制代码 代码如下:

  select * from users where name = ‘John’ or (votes > 100 and title

<> ‘Admin’)

  Exists Statements

  DB::table(‘users’)

  ->whereExists(function($query)

  {

  $query->select(DB::raw(1))

  ->from(‘orders’)

  ->whereRaw(‘orders.user_id = users.id’);

  })

  ->get();

上面的查询将产生以下SQL:


复制代码 代码如下:

select * from userswhere exists (

select 1 from orders where orders.user_id = users.id

)

四、聚合

查询构建器还提供了各种聚合方法,如统计,马克斯,min,avg和总和。

Using Aggregate Methods


复制代码 代码如下:

$users = DB::table(‘users’)->count();

$price = DB::table(‘orders’)->max(‘price’);

$price = DB::table(‘orders’)->min(‘price’);

$price = DB::table(‘orders’)->avg(‘price’);

$total = DB::table(‘users’)->sum(‘votes’);

Raw Expressions

有时您可能需要使用一个原始表达式的查询。这些表达式将注入的查询字符串,所以小心不要创建任何SQL注入点!创建一个原始表达式,可以使用DB:rawmethod:

Using A Raw Expression


复制代码 代码如下:

$users = DB::table(‘users’)

->select(DB::raw(‘count(*) as user_count, status’))

->where(‘status’, ‘<>’, 1)

->groupBy(‘status’)

->get();

递增或递减一个列的值


复制代码 代码如下:

DB::table(‘users’)->increment(‘votes’);

DB::table(‘users’)->increment(‘votes’, 5);

DB::table(‘users’)->decrement(‘votes’);

DB::table(‘users’)->decrement(‘votes’, 5);

您还可以指定额外的列更新:


复制代码 代码如下:

  DB::table(‘users’)->increment(‘votes’, 1, array(‘name’ => ‘John’));

Inserts

将记录插入表


复制代码 代码如下:

DB::table(‘users’)->insert(

array(’email’ => ‘john@example.com’, ‘votes’ => 0)

);

将记录插入表自动增加的ID

如果表,有一个自动递增的id字段使用insertGetId插入一个记录和检索id:


复制代码 代码如下:

$id = DB::table(‘users’)->insertGetId(

array(’email’ => ‘john@example.com’, ‘votes’ => 0)

);

注意:当使用PostgreSQL insertGetId方法预计,自增列被命名为“id”。

多个记录插入到表中


复制代码 代码如下:

DB::table(‘users’)->insert(array(

array(’email’ => ‘taylor@example.com’, ‘votes’ => 0),

array(’email’ => ‘dayle@example.com’, ‘votes’ => 0),

));

四、Updates

更新一个表中的记录


复制代码 代码如下:

DB::table(‘users’)

->where(‘id’, 1)

->update(array(‘votes’ => 1));

五、 Deletes

删除表中的记录


复制代码 代码如下:

DB::table(‘users’)->where(‘votes’, ‘<‘, 100)->delete();

删除表中的所有记录


复制代码 代码如下:

DB::table(‘users’)->delete();

删除一个表


复制代码 代码如下:

DB::table(‘users’)->truncate();

六、Unions

查询构建器还提供了一种快速的方法来“联盟”两个查询:


复制代码 代码如下:

  $first = DB::table(‘users’)->whereNull(‘first_name’);

  $users =

DB::table(‘users’)->whereNull(‘last_name’)->union($first)->get();

  unionAll方法也可以,有相同的方法签名。

  Pessimistic Locking

  查询构建器包括一些“悲观锁定”功能来帮助你做你的SELECT语句。  运行SELECT语句“共享锁”,你可以使用sharedLock方法查询:


复制代码 代码如下:

DB::table(‘users’)->where(‘votes’, ‘>’,

100)->sharedLock()->get();

更新“锁”在一个SELECT语句,您可以使用lockForUpdate方法查询:


复制代码 代码如下:

 DB::table(‘users’)->where(‘votes’, ‘>’, 100)->lockForUpdate()->get();

七、缓存查询

  你可以轻松地缓存查询的结果使用记忆法:


复制代码 代码如下:

$users = DB::table(‘users’)->remember(10)->get();

  在本例中,查询的结果将为十分钟被缓存。查询结果缓存时,不会对数据库运行,结果将从默认的缓存加载驱动程序指定您的应用程序。  如果您使用的是支持缓存的司机,还可以添加标签来缓存:


复制代码 代码如下:

$users = DB::table(‘users’)->cacheTags(array(‘people’, ‘authors’))->remember(10)->get();

https://www.jb51.net/article/54713.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113090.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • AJAX

    AJAX

    2022年4月2日
  • Java设计模式(十七)之行为型模式:责任链模式

    Java设计模式(十七)之行为型模式:责任链模式

    2021年4月9日
  • 一气之下,我一行代码搞定了约瑟夫环问题,面试官懵了[通俗易懂]

    一气之下,我一行代码搞定了约瑟夫环问题,面试官懵了[通俗易懂]大家好,我是帅地。对于约瑟夫环问题估计大家都听说过,除非你刚刚读大一,因为在大一大部分学校的课本都会降到这个算法题。为了以防万一你没听过,我还是给下问题的描述问题描述:编号为1-N的N个士兵围坐在一起形成一个圆圈,从编号为1的士兵开始依次报数(1,2,3…这样依次报),数到m的士兵会被杀死出列,之后的士兵再从1开始报数。直到最后剩下一士兵,求这个士兵的编号。记得有一次,貌似是阿里的面试,面试官给了我一到原汁原味的约瑟夫好,好家伙,看我不把你秀一把。不过,作为一个有着几十场面

    2022年6月4日
  • 计算机系统新手入门,电脑初学者入门教程

    计算机系统新手入门,电脑初学者入门教程本篇主要从关机、任务管理器、电脑屏幕锁定这三个方面,帮助初次学习电脑的人尽快掌握一些基本操作,快一起来学习吧。工具/材料电脑(本篇以Windows7系统为例)电脑关机01方法一。首先,点击屏幕左下方的win(当点击时,会提示“开始”的字样)。02点击后,可以看见有关机选项,点击关机,后面出现几个选项,根据需要进行选择就可以。03方法二:使用快捷键。按下快捷键Alt+F4。(这里需要注意,是同时按…

    2022年6月15日
  • linux修改java环境,linux下修改java环境变量

    linux修改java环境,linux下修改java环境变量linux下修改java环境变量[2021-02-0701:55:24]简介:linux修改php环境变量的方法:首先添加路径,代码为【exportPATH=”$PATH:/cxwww/server/php/7.3.4/bin”】;然后读取配置即可,代码为【source/etc/profile】。linux修改php环境变服务器这篇文章主要为大家展示了linux环境下怎么配置环境变量,内…

    2022年10月31日
  • 中星睿典职称计算机考试,大纲教材 – 中星睿典 – 全国职称计算机考试|职称计算机考试模块|全国职称计算机考试试题…

    中星睿典职称计算机考试,大纲教材 – 中星睿典 – 全国职称计算机考试|职称计算机考试模块|全国职称计算机考试试题…大纲教材介绍全国专业技术人员计算机应用能力考试,又称全国职称计算机应用考试。为贯彻党的十五届五中全会提出的“要在全社会广泛应用信息技术,全国职称计算机考试可以提高计算机和网络的普及应用程度,加强信息资源的开发和利用”的精神,落实国家加快信息化建设的要求,引导全国专业技术人员学习掌握计算机知识,提高计算机的应用能力,根据原人事部《关于全国专业技术人员计算机应用能力考试的通知》(人发2001124号)…

    2022年6月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号