laravel-orm

protected $dateFormat = 'U'; //为时间戳  

const CREATED_AT = 'time1';   //更新列为指定列
const UPDATED_AT = 'updated_at';

protected $connection = 'mysql1';  //连接另外数据库  对应datasebase里面的配置

protected $attributes = [    //给列一个默认值
     'time1' => '2021-10-19',
 ];
 #
 User::query()->take(5)->get();  //take == limit
 //fresh 等于就是再查一次数据库,但是对于当前user实例来说,还是保持以前的 [和refresh] // 这个的使用场景,比如你有一个查询,然后走了一个事件,当前models是一个对象集合,进入事件监听的时候可能会更新某一个字段,比如image_url,但是原始进来的这个属性是null的,所以这个时候,就可以使用refresh方法来重载一下这个模型,image_url就会值了
$user = User::find(2);
$userfresh = $user->fresh();

//reject 用法
$user = User::all();
[
//{
//"id": 2,
//"name": "123",
//"email": "294932451@qq.com",
//"email_verified_at": null,
//"created_at": "2021-12-30T08:48:49.000000Z",
//"updated_at": "2021-12-30T08:57:21.000000Z",
//"time1": "2021-10-19 00:00:00"
//},
//{
//    "id": 3,
//		"name": "啊实打实的",
//		"email": "zggMeKTnNvoVvFQl@qq.com",
//		"email_verified_at": null,
//		"created_at": "2021-12-30T08:51:48.000000Z",
//		"updated_at": "2021-12-30T08:51:48.000000Z",
//		"time1": "2021-10-19 00:00:00"
//	},
//{
//    "id": 4,
//		"name": "IvRaqWZXvLsCI93C",
//		"email": "dPhSw4oVNYlKtfSY@qq.com",
//		"email_verified_at": null,
//		"created_at": "2021-12-30T08:52:01.000000Z",
//		"updated_at": "2021-12-30T08:52:01.000000Z",
//		"time1": "2021-10-19 00:00:00"
//	},
//{
//    "id": 5,
//		"name": "xkp1ncyO8qruAacc",
//		"email": "GBVt5I2LaaRU5Hwh@qq.com",
//		"email_verified_at": null,
//		"created_at": "2021-12-30T08:52:01.000000Z",
//		"updated_at": "2021-12-30T08:52:01.000000Z",
//		"time1": "2021-10-19 00:00:00"
//	},
//{
//    "id": 6,
//		"name": "F7P6BOV00SXLexxf",
//		"email": "HwvnOdqbX0TAOxfw@qq.com",
//		"email_verified_at": null,
//		"created_at": "2021-12-30T08:52:02.000000Z",
//		"updated_at": "2021-12-30T08:52:02.000000Z",
//		"time1": "2021-10-19 00:00:00"
//	},
//{
//    "id": 7,
//		"name": "lNrdLtDB15CAoM8E",
//		"email": "xl6iDJcGDXANe5FL@qq.com",
//		"email_verified_at": null,
//		"created_at": "2021-12-30T08:52:02.000000Z",
//		"updated_at": "2021-12-30T08:52:02.000000Z",
//		"time1": "2021-10-19 00:00:00"
//	},
//{
//    "id": 8,
//		"name": "lNkEdkOt69qB1bty",
//		"email": "g2i3SF1ORlOCzSc5@qq.com",
//		"email_verified_at": null,
//		"created_at": "2021-12-30T08:52:03.000000Z",
//		"updated_at": "2021-12-30T08:52:03.000000Z",
//		"time1": "2021-10-19 00:00:00"
//	},

// 删除name==''的模型,说白了就是一个条件
$user = $user->reject(function ($user){
    return $user->name=='啊实打实的';
 });

//chunk使用  每次操作5条
 $user = User::query()->chunk(5,function ($users){
         Log::info($users);
 });
 [2021-12-30 09:25:13] local.INFO: [{"id":2,"name":"123","email":"294932451@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:48:49.000000Z","updated_at":"2021-12-30T08:57:21.000000Z","time1":"2021-10-19 00:00:00"},{"id":3,"name":"\u554a\u5b9e\u6253\u5b9e\u7684","email":"zggMeKTnNvoVvFQl@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:51:48.000000Z","updated_at":"2021-12-30T08:51:48.000000Z","time1":"2021-10-19 00:00:00"},{"id":4,"name":"IvRaqWZXvLsCI93C","email":"dPhSw4oVNYlKtfSY@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:52:01.000000Z","updated_at":"2021-12-30T08:52:01.000000Z","time1":"2021-10-19 00:00:00"},{"id":5,"name":"xkp1ncyO8qruAacc","email":"GBVt5I2LaaRU5Hwh@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:52:01.000000Z","updated_at":"2021-12-30T08:52:01.000000Z","time1":"2021-10-19 00:00:00"},{"id":6,"name":"F7P6BOV00SXLexxf","email":"HwvnOdqbX0TAOxfw@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:52:02.000000Z","updated_at":"2021-12-30T08:52:02.000000Z","time1":"2021-10-19 00:00:00"}]  
[2021-12-30 09:25:13] local.INFO: [{"id":7,"name":"lNrdLtDB15CAoM8E","email":"xl6iDJcGDXANe5FL@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:52:02.000000Z","updated_at":"2021-12-30T08:52:02.000000Z","time1":"2021-10-19 00:00:00"},{"id":8,"name":"lNkEdkOt69qB1bty","email":"g2i3SF1ORlOCzSc5@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:52:03.000000Z","updated_at":"2021-12-30T08:52:03.000000Z","time1":"2021-10-19 00:00:00"},{"id":9,"name":"gXSjl81Z444bWwEG","email":"CxzP7CUHnbOskhGx@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:52:03.000000Z","updated_at":"2021-12-30T08:52:03.000000Z","time1":"2021-10-19 00:00:00"},{"id":10,"name":"JNn1XURxiJUtHvCG","email":"GtQGZ4jzWcq6eV7Y@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:52:04.000000Z","updated_at":"2021-12-30T08:52:04.000000Z","time1":"2021-10-19 00:00:00"},{"id":11,"name":"RJc3BGyDfB9i3Wqv","email":"kmTqRXyVXeKlC5VY@qq.com","email_verified_at":null,"created_at":"2021-12-30T08:52:04.000000Z","updated_at":"2021-12-30T08:52:04.000000Z","time1":"2021-10-19 00:00:00"}]  


//chunkById  检索更新应该使用此方法,查出email_verified_at is null的数据,然后更改密码为指定密码,返回的是修改之后的模型实例
$user = User::query()->whereNull('email_verified_at')->chunkById(2,function ($users){
 $res = $users->each->update(['password'=>'1234567']);
     Log::info($res);
});
[2021-12-31 03:21:12] local.INFO: [{"id":2,"name":"123","email":"294932451@qq.com","email_verified_at":null,"password":"1234567","created_at":"2021-12-30T08:48:49.000000Z","updated_at":"2021-12-31T03:21:12.000000Z","time1":"2021-10-19 00:00:00"},{"id":3,"name":"\u554a\u5b9e\u6253\u5b9e\u7684","email":"zggMeKTnNvoVvFQl@qq.com","email_verified_at":null,"password":"1234567","created_at":"2021-12-30T08:51:48.000000Z","updated_at":"2021-12-31T03:21:12.000000Z","time1":"2021-10-19 00:00:00"}]  
[2021-12-31 03:21:12] local.INFO: [{"id":4,"name":"IvRaqWZXvLsCI93C","email":"dPhSw4oVNYlKtfSY@qq.com","email_verified_at":null,"password":"1234567","created_at":"2021-12-30T08:52:01.000000Z","updated_at":"2021-12-31T03:21:12.000000Z","time1":"2021-10-19 00:00:00"},{"id":5,"name":"xkp1ncyO8qruAacc","email":"GBVt5I2LaaRU5Hwh@qq.com","email_verified_at":null,"password":"1234567","created_at":"2021-12-30T08:52:01.000000Z","updated_at":"2021-12-31T03:21:12.000000Z","time1":"2021-10-19 00:00:00"}]  

//cursor  使用游标 处理大量数据使用  只会做一次查询
$user = User::cursor();
foreach ($user as $v){
     Log::info($v);
 }
// 加入条件筛选
$users = User::cursor()->filter(function ($user) {
     return $user->id > 20;   //只拿id大于20的
 });
 foreach ($users as $user){
     Log::info($user);
 }

selects 子查询基本使用

航班表
在这里插入图片描述
地区表
在这里插入图片描述
查询到达城市最晚的航班

 $res = Destinations::addselect(['last_flight'=>Flights::select('name')->whereColumn('destination_id','destinations.id')->OrderByDesc('arrived_at')->limit(1)])->get();
 #sql  select `la_destinations`.*, (select `name` from `la_flights` where `destination_id` = `la_destinations`.`id` order by `arrived_at` desc limit 1) as `last_flight` from `la_destinations

在这里插入图片描述

子查询排序

在这里插入图片描述

       $res = Destinations::OrderByDesc(Flights::select('arrived_at')->whereColumn('destination_id','destinations.id')->OrderByDesc('arrived_at')->limit(1))->get();
        dd($res->toArray());
        #select * from `la_destinations` order by (select `arrived_at` from `la_flights` where `destination_id` = `la_destinations`.`id` order by `arrived_at` desc limit 1) desc

在这里插入图片描述

firstOr

在找不到数据的时候会执行回调内的方法,并返回结果

        $model = Destinations::where('id', '>', 3)->firstOr(function () {
           return  Destinations::firstwhere('id',1);
//         return    User::find(2);
        });
        dd($model);

未找到异常

 $flight = Flights::findOrFail(50);
        $flight1 = Flights::where('id', '>', 50)->firstOrFail();
        dd($flight,$flight1);

返回404

检索或创建模型 firstOrCreate firstOrNew

 $flight = Flights::firstOrCreate(
            ['name' => 'London to Paris'],
            ['arrived_at' => '2022-01-01 14:50:37']
        );
        $flight1 = Flights::firstOrNew(
            ['name' => 'London to beijing'],
            ['arrived_at' => '2022-05-01 14:50:37']
        );

在这里插入图片描述
只会增加第一个,第二个需要save才会加入

$flight1->save();

多态关联

user
在这里插入图片描述
post
在这里插入图片描述
image
在这里插入图片描述
在这里插入图片描述
image model
在这里插入图片描述
post model
在这里插入图片描述
user model
在这里插入图片描述

跟着代码然后这个数据,输出结果就明白了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值