Laravel6.* DB查询构造器

public function sql(){

$data = DB::table('users')->get();//获取所有行
$data = DB::table('users')->where('id',1)->first();//单行
$data = DB::table('users')->where('id',1)->value('name');//单列
$data = DB::table('users')->pluck('title');//获取一列得值
$data = DB::table('users')->pluck('title','name');//获取一列得值 且更换键名

DB::table('users')->orderBy('id')->chunk(100, function ($users) {
foreach ($users as $user) {
//分块结果,切割成每次处理100条数据
return false;//可以终止继续获取结果
}
});

//聚合
$users = DB::table('users')->count();
$users = DB::table('orders')->max('price');
$price = DB::table('orders')->where('status',1)->avg('price');

//判断记录是否存在
return DB::table('orders')->where('id',1)->exists();
return DB::table('orders')->where('id',1)->doesntExist();

//如果你已经有了一个查询构造器实例,并且希望在现有的查询语句中加入一个字段,那么你可以使用 addSelect 方法:
$query = DB::table('users')->select('name');
$users = $query->addSelect('age')->get();


//join语法

$users = DB::table('users')
->join('orders','users.id','=','orders.uid')
->select('users.*','orders.status')
->get();
// leftJoin rightJoin crossJoin(笛卡尔积)


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

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

$users = DB::table('users')
->where('name', 'like', 'T%')
->get();


$users = DB::table('users')->where([
['status', '=', '1'],
['subscribed', '<>', '1'],
])->get();

$users = DB::table('users')
->whereBetween('votes', [1, 100])
->get();

$users = DB::table('users')
->whereNotBetween('votes', [1, 100])
->get();

$users = DB::table('users')
->whereIn('id', [1, 2, 3])
->get(); // 方法验证字段的值必须存在指定的数组里:

$users = DB::table('users')
->whereNotIn('id', [1, 2, 3])
->get();

$users = DB::table('users')
->whereNull('updated_at')
->get(); //whereNull 方法验证指定的字段必须是 NULL:


$users = DB::table('users')
->whereNotNull('updated_at')
->get();

$users = DB::table('users')
->whereDate('created_at', '2016-12-31')
->get();

$users = DB::table('users')
->whereMonth('created_at', '12')
->get();

$users = DB::table('users')
->whereDay('created_at', '31')
->get();

$users = DB::table('users')
->whereYear('created_at', '2016')
->get();

$users = DB::table('users')
->whereTime('created_at', '=', '11:20:45')
->get();

$users = DB::table('users')
->whereColumn('first_name', 'last_name')
->get();//whereColumn 方法用于比较两个字段的值 是否相等

// 你也可以传入一个比较运算符:

$users = DB::table('users')
->whereColumn('updated_at', '>', 'created_at')
->get();

// whereColumn 方法也可以传递数组,用 and 运算符链接:

$users = DB::table('users')
->whereColumn([
['first_name', '=', 'last_name'],
['updated_at', '>', 'created_at'],
])->get();


// orderBy
// orderBy 方法允许你通过给定字段对结果集进行排序。 orderBy 的第一个参数应该是你希望排序的字段,第二个参数控制排序的方向,可以是 asc 或 desc:

$users = DB::table('users')
->orderBy('name', 'desc')
->get();

// latest / oldest
// latest 和 oldest 方法可以使你轻松地通过日期排序。它默认使用 created_at 列作为排序依据。当然,你也可以传递自定义的列名:

$user = DB::table('users')
->latest()
->first();

// inRandomOrder
// inRandomOrder 方法被用来将结果随机排序。例如,你可以使用此方法随机找到一个用户。

$randomUser = DB::table('users')
->inRandomOrder()
->first();


/* 更新或者新增
有时您可能希望更新数据库中的现有记录,或者如果不存在匹配记录则创建它。 在这种情况下,可以使用 updateOrInsert 方法。 updateOrInsert 方法接受两个参数:一个用于查找记录的条件数组,以及一个包含要更该记录的键值对数组。

updateOrInsert 方法将首先尝试使用第一个参数的键和值对来查找匹配的数据库记录。 如果记录存在,则使用第二个参数中的值去更新记录。 如果找不到记录,将插入一个新记录,更新的数据是两个数组的集合:*/

DB::table('users')
->updateOrInsert(
['email' => 'john@example.com', 'name' => 'John'],
['votes' => '2']
);


/* 自增 & 自减
查询构造器还为给定字段的递增或递减提供了方便的方法。此方法提供了一个比手动编写 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']);

 

 

 


}

  

上一篇:MVVM使用步骤


下一篇:laravel的数据库操作