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}%'")

Read More

发表回复