Laravel-5.6数据库操作
整理了一份自己用着还算舒服的jwt+dingo的laravel5.6版本的api框架
laravel 的数据库操作还是比较和谐的。使用models的操作
// 使用命令新建model文件
php artisan make:model User // 在api/Models 下生成 User.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model
{
use SoftDeletes;// 引入后使用软删除 对应表里要有created_at , updated_at , deleted_at 三个字段 删除时deleted_at 设置为删除时间,并且get();等正常查询不会检索到
/**
* 需要被转换成日期的属性。
*
* @var array
*/
protected $dates = ['deleted_at'];
protected $table = 'user'; // 可以自定义表名
protected $hidden = ['deleted_at','password']; // 这里在获取时隐藏显示的字段
protected $fillable = ['mobile', 'name', 'email'];//User::creat([])时,可以直接插入的字段,其他字段忽略添加;
}
用户表的删除 软删除和硬删除 withTrashed() 可以忽略软删除 onlyTrashed();//只获取已经软删除的信息
User::qure()->where('id', 1)->delete();// 软删除(只是更新deleted_at 为当前时间) User::qure()->withTrashed()->where('id', 1)->delete();// 直接删除数据库内的记录 (同理, withTrashed() 查询时也是忽略deleted_at) /** *打印两个sql语句查看原理 * delete from user where id=1 and deleted_at is NULL; * delete from user where id=1; */
打印model执行时的sql语句
DB::connection()->enableQueryLog(); #开启执行日志 User::where('id', '=', 1)->get(); echo json_encode(DB::getQueryLog()); 输出的就是sql语句 exit;
//时间区间内查询
whereBetween('created_at', [Input::get('startTime'), Input::get('endTime')])
//搜索。多字段模糊匹配
whereRaw("concat(`name`,`item_no`) like '%{$content}%'")