laravel判断两个字符串不相等是否相等

3313人阅读
& & & &对于后端开发而言,前端request请求中的参数校验是一个必不可少的环节。无论传来的参数是id还是email还是其他的参数,我们都要对参数的类型、大小、格式等等做这样或者那样的校验,然后才进行逻辑处理,以确保逻辑处理时万无一失,不会出现异样。于是乎,在controller层中就会出现一大坨的校验代码,这些校验代码甚至有时候都超过了正常的逻辑代码的数量,对于程序的扩展和维护很不利的。
& & & &但是,laravel为我们提供了一个很好的服务去解决参数校验这个问题,它就是----Validate。
& & & &首先,我们需要建一个路由,暂时就叫&test&吧,然后test对应着TestController中的test方法。
Route::get('test', 'TestController@test');
class TestController extends Controller
public function test(Request $request)
& & & 假设请求的参数中需要id、title这两个参数,并且id必须是数字,且长度是1到10,并且是DB中的一行数据的主键、title必须是字符串,id和title都不能为空。一般的框架在写的时候就会先取到id和title,然后对取到的id和title进行“是否是空”、“是否长度在1到10之间”、“通过id能否在数据库中找到数据”等等繁琐的校验,利用laravel的“Validate”你只需要这样就可以了。
public function test(Request $request)
$validate = Validator::make($request-&all(), [
'id' =& 'required|integer|between:1,10',
'title' =& 'required|string'
如果没有错误,就会继续往下进行逻辑处理。假如说校验不通过,例如id不在1和10之间,可以通过“validate”实例中的“errors()”方法,得到所有的错误,然后将错误放回给客户端,如果想返回错误队列中的头一个错误,就写$validate-&errors()-&first(),如果想返回所有错误列表,就写“$validate-&errors()-&all()”。如下:
if($validate-&fails())
return $validate-&errors()-&first();
if($validate-&fails())
return $validate-&errors()-&all();
假如请求参数中的id不是一个数字,而是字符串,结果就会出现:
你可能会想:返回结果能否使中文?答案当然是可以,你可以针对自己的程序,换成你任何想要的语言:
在项目中找到“resources”目录下的“lang” 中的 “en”文件夹中的“validation.php”文件,
打开,然后找到这一行:
=& 'The :attribute must be an integer.',
这句话除了“:attribute”是不是其他字和返回结果一模一样?或许你已经猜到了:这就是你调用的‘integer’方法的返回结果,“:attribute”是个变量,是你传的“id”!现在,你可以写成任何语言,我把它改为中文:
=& ':attribute 必须是数字!'
然后我们再看返回结果:
完美!只要你利用Validator的make方法,在请求参数数组中对应上‘integer’、“required”等字符串就可以利用laravel提供的服务,对请求参数进行“数字”、“判空”等校验,laravel提供的众多校验方法,可以在laravel官网查询。(ps:或者直接查询validation.php这个文件!)
你或许还会想:我现在校验了id是否为空,id是否是数字,我还想校验id对应的数据能否在数据库中查得到!这能实现吗?
答案是:完全可以!在上篇文章中我介绍了laravel核心是一个IOC容器,你可以很方便的扩展任何服务注入到容器中!自定义validate服务也不例外!
我们首先创建一个provider
php artisan make:provider TestProvider
然后在boot方法里写下:
public function boot()
Validator::extend('user', function($attribute, $value, $parameters) {
return !is_null(User::find($value));
这行代码很好理解吧:1、调用“Validator”的“extend”方法。2、传给他俩个参数,一个是“user”,一个是返回值为boolen类型的callback 函数。3、函数中判断User表中是否含有$value值数据,如果有,返回true,如果没有,返回false。
然后在“config”的“app.php”中注册上这个provider。(如果不清楚,可以去看前一篇文章“三分钟学会laravel服务扩展”)
然后在validation.php中写上:
=& '此用户不存在!',
然后在校验方法中添上“user”
$validate = Validator::make($request-&all(), [
'id' =& 'required|integer|between:1,10|user',
'title' =& 'required|string'
数据库中插入数据,开始检验:
OK,大功告成!是不是很简单?laravel框架是不是很强大?
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:106515次
积分:1439
积分:1439
排名:千里之外
原创:28篇
评论:39条
(2)(2)(1)(2)(3)(2)(3)(3)(4)(2)(1)(2)(2)(2)(1)(3)(1)问题:laravel 怎么截取字符串多余的用省略号表示?
描述:laravel 怎么截取字符串多余的用省略号表示?解决方案1:
如果是从数据库提取的数据,直接选择的时候替换就行的。
解决方案2:
Tips:前端可以通过 css3 text-overflow:ellipsis 也能做到。
解决方案3:
laravel 有这样一个帮助函数str_limit($value, $limit = 100, $end = '...')
解决方案4:
php就可以啊,判断一下字符串长度strlen,超了就加 ...
mb_substr();
以上介绍了“laravel 怎么截取字符串多余的用省略号表示?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/1126647.html
上一篇: 下一篇:[ Laravel 5.1 文档 ] 服务 —— 验证
这篇文章对我很有帮助
这篇文章对我很有帮助
学院君 has written
资深PHP工程师,Laravel学院院长
Laravel 5.1Laravel框架表单验证详解
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Laravel框架表单验证详解,本文给出了Laravel表单基本验证例子、高级使用方法、验证方法介绍等,要的朋友可以参考下
基础验证例子
$validator = Validator::make(
array('name' =& 'Dayle'),
array('name' =& 'required|min:5')
传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则。
多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素。
通过数组指定验证规则
$validator = Validator::make(
array('name' =& 'Dayle'),
array('name' =& array('required', 'min:5'))
一旦一个 Validator 实例被创建,可以使用 fails (或者 passes)函数执行这个验证。
if ($validator-&fails())
// The given data did not pass validation
如果验证失败,您可以从验证器中获取错误消息。
$messages = $validator-&messages();
您也可以使用 failed 函数得到不带错误消息的没有通过验证的规则的数组。
$failed = $validator-&failed();
Validator 类提供了一些验证规则用于验证文件,比如 size、mimes等。在验证文件的时候,您可以和其他验证一样传递给验证器。
附带错误消息
在一个 Validator 实例上调用 messages 函数之后,将会得到一个 MessageBag 实例,该实例拥有很多处理错误消息的方便的函数。
获取一个域的第一个错误消息
echo $messages-&first('email');
获取一个域的全部错误消息
foreach ($messages-&get('email') as $message)
获取全部域的全部错误消息
foreach ($messages-&all() as $message)
检查一个域是否存在消息
if ($messages-&has('email'))
以某种格式获取一条错误消息
echo $messages-&first('email', '&p&:message&/p&');
  注意: 默认情况下,消息将使用与 Bootstrap 兼容的语法进行格式化。
  以某种格式获取所有错误消息
  foreach ($messages-&all('&li&:message&/li&') as $message)
错误消息 & 视图
一旦您执行了验证,您需要一种简单的方法向视图反馈错误消息。这在 Lavavel 中能够方便的处理。以下面的路由作为例子:
Route::get('register', function()
return View::make('user.register');
Route::post('register', function()
$rules = array(...);
$validator = Validator::make(Input::all(), $rules);
if ($validator-&fails())
return Redirect::to('register')-&withErrors($validator);
注意当验证失败,我们使用 withErrors 函数把 Validator 实例传递给 Redirect。这个函数将刷新 Session 中保存的错误消息,使得在下次请求中能够可用。
然而,注意我们没有必要明确的在 GET 路由中绑定错误消息到路由。这是因为 Laravel 总会检查 Session 中的错误,并自动绑定它们到视图如果它们是可用的。所以,对于每个请求,一个 $errors 变量在所有视图中总是可用的,允许您方便的认为 $errors 总是被定义并可以安全使用的。$errors 变量将是一个 MessageBag 类的实例。
所以,在跳转之后,您可以在视图中使用自动绑定的 $errors 变量:
&?php echo $errors-&first('email'); ?&
  可用的验证规则
  下面是一个所有可用的验证规则的列表以及它们的功能:
 Active URL
 After (Date)
 Alpha Dash
 Alpha Numeric
 Before (Date)
 Confirmed
 Date Format
 Different
 Exists (Database)
 Image (File)
 IP Address
 MIME Types
 Regular Expression
 Required
 Required If
 Required With
 Required Without
 Unique (Database)
验证此规则的值必须是 yes、 on 或者是 1。这在验证是否同意"服务条款"的时候非常有用。
active_url
验证此规则的值必须是一个合法的 URL,根据 PHP 函数 checkdnsrr。
after:date
验证此规则的值必须在给定日期之后,日期将通过 PHP 函数 strtotime 传递。
  验证此规则的值必须全部由字母字符构成。
alpha_dash
  验证此规则的值必须全部由字母、数字、中划线或下划线字符构成。
  验证此规则的值必须全部由字母和数字构成。
before:date
  验证此规则的值必须在给定日期之前,日期将通过 PHP 函数 strtotime 传递。
between:min,max
  验证此规则的值必须在给定的 min 和 max 之间。字符串、数字以及文件都将使用大小规则进行比较。
  验证此规则的值必须和 foo_confirmation 的值相同。比如,需要验证此规则的域是 password,那么在输入中必须有一个与之相同的 password_confirmation 域。
  验证此规则的值必须是一个合法的日期,根据 PHP 函数 strtotime。
date_format:format
  验证此规则的值必须符合给定的 format 的格式,根据 PHP 函数 date_parse_from_format。
different:field
  验证此规则的值必须与指定的 field 域的值不同。
  验证此规则的值必须是一个合法的电子邮件地址。
exists:table,column
  验证此规则的值必须在指定的数据库的表中存在。
  Exists 规则的基础使用
代码如下:'state' =& 'exists:states'
'state' =& 'exists:states,abbreviation'
您也可以指定更多的条件,将以 "where" 的形式添加到查询。
'email' =& 'exists:staff,email,account_id,1'
  验证此规则的值必须是一个图片 (jpeg, png, bmp 或者 gif)。
  in:foo,bar,...
  验证此规则的值必须在给定的列表中存在。
  integer
  验证此规则的值必须是一个整数。
  验证此规则的值必须是一个合法的 IP 地址。
  验证此规则的值必须小于最大值 value。字符串、数字以及文件都将使用大小规则进行比较。
  mimes:foo,bar,...
  验证此规则的文件的 MIME 类型必须在给定的列表中。
  MIME 规则的基础使用
'photo' =& 'mimes:jpeg,bmp,png'
  验证此规则的值必须大于最小值 value。字符串、数字以及文件都将使用大小规则进行比较。
not_in:foo,bar,...
  验证此规则的值必须在给定的列表中不存在。
  验证此规则的值必须是一个数字。
regex:pattern
  验证此规则的值必须符合给定的正则表达式。
  注意: 当使用 regex 模式的时候,有必要使用数组指定规则,而不是管道分隔符,特别是正则表达式中包含一个管道字符的时候。
  验证此规则的值必须在输入数据中存在。
required_if:field,value
  当指定的域为某个值的时候,验证此规则的值必须存在。
required_with:foo,bar,...
  仅当指定的域存在的时候,验证此规则的值必须存在。
required_without:foo,bar,...
  仅当指定的域不存在的时候,验证此规则的值必须存在。
same:field
  验证此规则的值必须与给定域的值相同。
size:value
验证此规则的值的大小必须与给定的 value 相同。对于字符串,value 代表字符的个数;对于数字,value 代表它的整数值,对于文件,value 代表文件以KB为单位的大小。
unique:table,column,except,idColumn
验证此规则的值必须在给定的数据库的表中唯一。如果 column 没有被指定,将使用该域的名字。
Unique 规则的基础使用
'email' =& 'unique:users'
'email' =& 'unique:users,email_address'
强制忽略一个给定的 ID
'email' =& 'unique:users,email_address,10'
  验证此规则的值必须是一个合法的 URL。
  定制错误消息
  如果有需要,您可以使用定制的错误消息代替默认的消息。这里有好几种定制错误消息的方法。
  传递定制消息到验证器
$messages = array(
 'required' =& 'The :attribute field is required.',
 $validator = Validator::make($input, $rules, $messages);
注意: :attribute 占位符将被实际的进行验证的域的名字代替,您也可以在错误消息中使用其他占位符。
其他验证占位符
  $messages = array(
  'same' =& 'The :attribute and :other must match.',
  'size' =& 'The :attribute must be exactly :size.',
  'between' =& 'The :attribute must be between :min - :max.',
  'in' =& 'The :attribute must be one of the following types:
  有些时候,您可能希望只对一个指定的域指定定制的错误消息:
  对一个指定的域指定定制的错误消息
$messages = array(
'email.required' =& 'We need to know your e-mail address!',
在一些情况下,您可能希望在一个语言文件中指定错误消息而不是直接传递给 Validator。为了实现这个目的,请在 app/lang/xx/validation.php 文件中添加您的定制消息到 custom 数组。
在语言文件中指定错误消息
'custom' =& array(
'email' =& array(
'required' =& 'We need to know your e-mail address!',
定制验证规则
Laravel 提供了一系列的有用的验证规则;但是,您可能希望添加自己的验证规则。其中一种方法是使用 Validator::extend 函数注册定制的验证规则:
注册一个定制的验证规则
Validator::extend('foo', function($attribute, $value, $parameters)
return $value == 'foo';
注意: 传递给 extend 函数的规则的名字必须符合 "snake cased" 命名规则。
  定制的验证器接受三个参数:待验证属性的名字、待验证属性的值以及传递给这个规则的参数。
  您也可以传递一个类的函数到 extend 函数,而不是使用闭包:
  Validator::extend('foo', 'FooValidator@validate');
  注意您需要为您的定制规则定义错误消息。您既可以使用一个行内的定制消息数组,也可以在验证语言文件中进行添加。
  您也可以扩展 Validator 类本身,而不是使用闭包回调扩展验证器。为了实现这个目的,添加一个继承自 Illuminate\Validation\Validator 的验证器类。您可以添加在类中添加以 validate 开头的验证函数:
扩展验证器类
class CustomValidator extends Illuminate\Validation\Validator {
public function validateFoo($attribute, $value, $parameters)
return $value == 'foo';
下面,您需要注册定制的验证器扩展:
您需要注册定制的验证器扩展
Validator::resolver(function($translator, $data, $rules, $messages)
return new CustomValidator($translator, $data, $rules, $messages);
  当创建一个定制的验证规则,您有时需要为错误消息定义一个定制的占位符。为了实现它,您可以像上面那样创建一个定制的验证器,并且在验证器中添加一个 replaceXXX 函数:
protected function replaceFoo($message, $attribute, $rule, $parameters)
return str_replace(':foo', $parameters[0], $message);
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具本文讲的是Laravel 5.2 数据库查询的例子,
数据库查询构建器提供了一个方便的、平滑的接口来创建和运行数据库查询。查询构建器可以用于执行应用中大部分数据库操作,并且能够在支持的所有数据库系统上工作。
注意:Laravel 查询构建器使用 PDO 参数绑定来避免 SQ
数据库查询构建器提供了一个方便的、平滑的接口来创建和运行数据库查询。查询构建器可以用于执行应用中大部分数据库操作,并且能够在支持的所有数据库系统上工作。
注意:Laravel 查询构建器使用 PDO 参数绑定来避免 SQL 注入攻击,不再需要过滤传递到绑定的字符串。
2、获取结果集
从一张表中取出所有行
在查询之前,使用DB门面的table方法,table方法为给定表返回一个查询构建器,允许你在查询上链接更多约束条件并最终返回查询结果。在本例中,我们使用get方法获取表中所有记录:
namespace App\Http\C
use App\Http\Controllers\C
class UserController extends Controller{
* 显示用户
* @return Response
public function index()
$users = DB::table('users')-&get();
return view('user.index', ['users' =& $users]);
和原生查询一样,get方法返回结果集的数组,其中每一个结果都是PHP对象的StdClass实例。你可以像访问对象的属性一样访问列的值:
foreach ($users as $user) {
echo $user-&
从一张表中获取一行/一列
如果你只是想要从数据表中获取一行数据,可以使用first方法,该方法将会返回单个StdClass对象:
$user = DB::table('users')-&where('name', 'John')-&first();
echo $user-&
如果你不需要完整的一行,可以使用value方法从结果中获取单个值,该方法会直接返回指定列的值:
$email = DB::table('users')-&where('name', 'John')-&value('email');
从一张表中获取组块结果集
如果你需要处理成千上百条数据库记录,可以考虑使用chunk方法,该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包,该方法在编写处理大量数据库记录的 Artisan 命令的时候非常有用。比如,我们可以将处理全部 users 表数据处理成一次处理 100 记录的小组块:
DB::table('users')-&chunk(100, function($users) {
foreach ($users as $user) {
你可以通过从闭包函数中返回false来中止组块的运行:
DB::table('users')-&chunk(100, function($users) {
// 处理结果集...
获取数据列值列表
如果想要获取包含单个列值的数组,可以使用lists方法,在本例中,我们获取所有title的数组:
$titles = DB::table('roles')-&lists('title');
foreach ($titles as $title) {
在还可以在返回数组中为列值指定更多的自定义键(该自定义键必须是该表的其它字段列名,否则会报错):
$roles = DB::table('roles')-&lists('title', 'name');
foreach ($roles as $name =& $title) {
队列构建器还提供了很多聚合方法,比如count, max, min, avg, 和 sum,你可以在构造查询之后调用这些方法:
$users = DB::table('users')-&count();
$price = DB::table('orders')-&max('price');
当然,你可以联合其它查询子句和聚合函数来构建查询:
$price = DB::table('orders')
-&where('finalized', 1)
-&avg('price');
3、查询(Select)
指定查询子句
当然,我们并不总是想要获取数据表的所有列,使用select方法,你可以为查询指定自定义的select子句:
$users = DB::table('users')-&select('name', 'email as user_email')-&get();
distinct方法允许你强制查询返回不重复的结果集:
$users = DB::table('users')-&distinct()-&get();
如果你已经有了一个查询构建器实例并且希望添加一个查询列到已存在的select子句,可以使用addSelect方法:
$query = DB::table('users')-&select('name');
$users = $query-&addSelect('age')-&get();
原生表达式
有时候你希望在查询中使用原生表达式,这些表达式将会以字符串的形式注入到查询中,所以要格外小心避免被 SQL 注入。想要创建一个原生表达式,可以使用 DB::raw方法:
$users = DB::table('users')
-&select(DB::raw('count(*) as user_count, status'))
-&where('status', '&&', 1)
-&groupBy('status')
4、连接(Join)
内连接(等值连接)
查询构建器还可以用于编写基本的SQL“内连接”,你可以使用查询构建器实例上的join方法,传递给join方法的第一次参数是你需要连接到的表名,剩余的其它参数则是为连接指定的列约束,当然,正如你所看到的,你可以在单个查询中连接多张表:
$users = DB::table('users')
-&join('contacts', 'users.id', '=', 'contacts.user_id')
-&join('orders', 'users.id', '=', 'orders.user_id')
-&select('users.*', 'contacts.phone', 'orders.price')
如果你是想要执行“左连接”而不是“内连接”,可以使用leftJoin方法。该方法和join方法的使用方法一样:
$users = DB::table('users')
-&leftJoin('posts', 'users.id', '=', 'posts.user_id')
高级连接语句
你还可以指定更多的高级连接子句,传递一个闭包到join方法作为该方法的第2个参数,该闭包将会返回允许你指定join子句约束的JoinClause对象:
DB::table('users')
-&join('contacts', function ($join) {
$join-&on('users.id', '=', 'contacts.user_id')-&orOn(...);
如果你想要在连接中使用“where”风格的子句,可以在查询中使用where和orWhere方法。这些方法将会将列和值进行比较而不是列和列进行比较:
DB::table('users')
-&join('contacts', function ($join) {
$join-&on('users.id', '=', 'contacts.user_id')
-&where('contacts.user_id', '&', 5);
5、联合(Union)
查询构建器还提供了一条“联合”两个查询的快捷方式,比如,你要创建一个独立的查询,然后使用union方法将其和第二个查询进行联合:
$first = DB::table('users')
-&whereNull('first_name');
$users = DB::table('users')
-&whereNull('last_name')
-&union($first)
unionAll方法也是有效的,并且和union有同样的使用方法。
6、Where子句
简单where子句
使用查询构建器上的where方法可以添加where子句到查询中,调用where最基本的方法需要三个参数,第一个参数是列名,第二个参数是一个数据库系统支持的任意操作符,第三个参数是该列要比较的值。
例如,下面是一个验证“votes”列的值是否等于100的查询:
$users = DB::table('users')-&where('votes', '=', 100)-&get();
为了方便,如果你只是简单比较列值和给定数值是否相等,可以将数值直接作为where方法的第二个参数:
$users = DB::table('users')-&where('votes', 100)-&get();
当然,你可以使用其它操作符来编写where子句:
$users = DB::table('users')
-&where('votes', '&=', 100)
$users = DB::table('users')
-&where('votes', '&&', 100)
$users = DB::table('users')
-&where('name', 'like', 'T%')
你可以通过方法链将多个where约束链接到一起,也可以添加or子句到查询,orWhere方法和where方法接收参数一样:
$users = DB::table('users')
-&where('votes', '&', 100)
-&orWhere('name', 'John')
更多Where子句
whereBetween
whereBetween方法验证列值是否在给定值之间:
$users = DB::table('users')
-&whereBetween('votes', [1, 100])-&get();
whereNotBetween
whereNotBetween方法验证列值不在给定值之间:
$users = DB::table('users')
-&whereNotBetween('votes', [1, 100])
whereIn/whereNotIn
whereIn方法验证给定列的值是否在给定数组中:
$users = DB::table('users')
-&whereIn('id', [1, 2, 3])
whereNotIn方法验证给定列的值不在给定数组中:
$users = DB::table('users')
-&whereNotIn('id', [1, 2, 3])
whereNull/whereNotNull
whereNull方法验证给定列的值为NULL:
$users = DB::table('users')
-&whereNull('updated_at')
whereNotNull方法验证给定列的值不是NULL:
$users = DB::table('users')
-&whereNotNull('updated_at')
高级Where子句
有时候你需要创建更加高级的where子句比如“where exists”或者嵌套的参数分组。Laravel查询构建器也可以处理这些。作为开始,让我们看一个在括号中进行分组约束的例子:
DB::table('users')
-&where('name', '=', 'John')
-&orWhere(function ($query) {
$query-&where('votes', '&', 100)
-&where('title', '&&', 'Admin');
正如你所看到的,传递闭包到orWhere方法构造查询构建器来开始一个约束分组,,该闭包将会获取一个用于设置括号中包含的约束的查询构建器实例。上述语句等价于下面的SQL:
select * from users where name = 'John' or (votes & 100 and title && 'Admin')
exists语句
whereExists方法允许你编写where existSQL子句,whereExists方法接收一个闭包参数,该闭包获取一个查询构建器实例从而允许你定义放置在“exists”子句中的查询:
DB::table('users')
-&whereExists(function ($query) {
$query-&select(DB::raw(1))
-&from('orders')
-&whereRaw('orders.user_id = users.id');
上述查询等价于下面的SQL语句:
select * from users
where exists (
select 1 from orders where orders.user_id = users.id
7、排序、分组、限定
orderBy方法允许你通过给定列对结果集进行排序,orderBy的第一个参数应该是你希望排序的列,第二个参数控制着排序的方向——asc或desc:
$users = DB::table('users')
-&orderBy('name', 'desc')
groupBy / having / havingRaw
groupBy和having方法用于对结果集进行分组,having方法和where方法的用法类似:
$users = DB::table('users')
-&groupBy('account_id')
-&having('account_id', '&', 100)
havingRaw方法可以用于设置原生字符串作为having子句的值,例如,我们要找到所有售价大于$2500的部分:
$users = DB::table('orders')
-&select('department', DB::raw('SUM(price) as total_sales'))
-&groupBy('department')
-&havingRaw('SUM(price) & 2500')
skip / take
想要限定查询返回的结果集的数目,或者在查询中跳过给定数目的结果,可以使用skip和take方法:
$users = DB::table('users')-&skip(10)-&take(5)-&get();
8、插入(Insert)
查询构建器还提供了insert方法来插入记录到数据表。insert方法接收数组形式的列名和值进行插入操作:
DB::table('users')-&insert(
['email' =& '', 'votes' =& 0]);
你甚至可以一次性通过传入多个数组来插入多条记录,每个数组代表要插入数据表的记录:
DB::table('users')-&insert([
['email' =& '', 'votes' =& 0],
['email' =& '', 'votes' =& 0]
如果数据表有自增ID,使用insertGetId方法来插入记录将会返回ID值:
$id = DB::table('users')-&insertGetId(
['email' =& '', 'votes' =& 0]
注意:当使用PostgresSQL时insertGetId方法默认自增列被命名为id,如果你想要从其他“序列”获取ID,可以将序列名作为第二个参数传递到insertGetId方法。
9、更新(Update)
当然,除了插入记录到数据库,查询构建器还可以通过使用update方法更新已有记录。update方法和insert方法一样,接收列和值的键值对数组包含要更新的列,你可以通过where子句来对update查询进行约束:
DB::table('users')
-&where('id', 1)
-&update(['votes' =& 1]);
查询构建器还提供了方便增减给定列名数值的方法。相较于编写update语句,这是一条捷径,提供了更好的体验和测试接口。
这两个方法都至少接收一个参数:需要修改的列。第二个参数是可选的,用于控制列值增加/减少的数目。
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, ['name' =& 'John']);
10、删除(Delete)
当然,查询构建器还可以通过delete方法从表中删除记录:
DB::table('users')-&delete();
在调用delete方法之前可以通过添加where子句对delete语句进行约束:
DB::table('users')-&where('votes', '&', 100)-&delete();
如果你希望清除整张表,也就是删除所有列并将自增ID置为0,可以使用truncate方法:
DB::table('users')-&truncate();
11、悲观锁
查询构建器还包含一些方法帮助你在select语句中实现“悲观锁”。可以在查询中使用sharedLock方法从而在运行语句时带一把”共享锁“。共享锁可以避免被选择的行被修改直到事务提交:
DB::table('users')-&where('votes', '&', 100)-&sharedLock()-&get();
此外你还可以使用lockForUpdate方法。“for update”锁避免选择行被其它共享锁修改或删除:
DB::table('users')-&where('votes', '&', 100)-&lockForUpdate()-&get();
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
laravel 数据库查询、laravel5 数据库操作、laravel5 数据库配置、laravel5 多个数据库、laravel5 数据库,以便于您获取更多的相关知识。
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...
云栖社区()为您免费提供相关信息,包括
的信息,还有laravel 数据库查询、laravel5 数据库操作、laravel5 数据库配置、laravel5 多个数据库、laravel5 数据库等
,所有相关内容均不代表云栖社区的意见!

我要回帖

更多关于 判断两字符串相等 的文章

 

随机推荐