laravel笔记-Eloquent ORM(基础)

本文是关于Laravel中Eloquent ORM的基础使用笔记,包括模型定义、数据库连接、查询、插入/更新、删除操作,以及软删除、查询作用域和事件监听等高级特性。介绍了如何自定义表名、主键、时间戳,以及如何利用全局和本地作用域进行查询约束。
摘要由CSDN通过智能技术生成

laravel笔记-Eloquent ORM(基础)

写在前面

时间可贵,善用目录↑

学习Laravel的笔记,仅仅是作为laravel文档笔记,目的是强化对文档的理解,质量不高。


什么是Eloquent ORM

M,就是其他框架里的模型~,用来和数据库交互,一般来讲每一个表对应一个模型。

这篇主要介绍简单的使用流程,为了跑通概念。


定义一个Eloquent ORM

使用Artisan 命令:

php artisan make:model Flight

运行完后我们会在app目录下看到我们创建的model。

表名

这里注意,我们并没有定义Flight对应的表明,默认规则是模型类名的复数作为与其对应的表名。Flight->flights。

当然,我们可以使用$table指定一个表来关联Eloquent。

主键

Eloquent默认每张表的主键名为id,你可以在模型类中定义一个$primaryKey属性来覆盖该约定。

时间戳

laravel默认自动管理created_at和updated_at(在创建表的时候需要创建列)。框架会自动填充相应列。

如果不想自动管理可以$timestamps = false

当然如果要自行更改该时间戳字段的格式可以$dateFormat.

数据库连接

Eloquent默认使用默认的数据库连接,当然也可以自行传入一个定义好的连接
使用$connection = '你配置的连接名'(config/database.php中配置)。

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model{
   
    // 关联到模型的数据表
    protected $table = 'flight';
    //设置主键
    protected $primaryKey = 'flight_id';
    //关闭created_at和updated_at的自动管理
    $timestamps = false;
}

如何使用Eloquent ORM

如果我们按之前的步骤创建了一个Eloquent,我们就可以使用它方便的对数据库进行操作。

使用all()或者get()查询时,返回值为Illuminate\Database\Eloquent\Collection的实例,所以我们可以查询Collection的源码来查看如何操作数据~

查询:

use App\Flight;

//比如说查询全部数据all()
$flights = App\Flight::all();
//循环输出结果
foreach ($flights as $flight) {
    echo $flight->name;
}

//一个简单的带约束的查询
$flights = App\Flight::where('active', 1)
               ->orderBy('name', 'desc')
               ->take(10)
               ->get();

//比如说遍历操作
$flights = $flights->reject(function ($flight) {
   
    return $flight->cancelled;
});

//也可以分组操作数据
App\Flight::chunk(200, function ($flights) {
   
    foreach ($flights as $flight) {
        //
    }
});

//当我们需要逐条处理大量数据是可以使用cursor()
//游标,可以大幅度减少内存消耗
foreach (Flight::where('foo', 'bar')->cursor() as $flight) {
    //
}

//我们也可以通过主键来获取
$flight = App\Flight::find(1);
//当需要抛出异常时~findOrFail
//会返回一个404响应
$model = App\Flight::findOrFail(1);

//或者获取匹配查询条件的第一个模型...
$flight = App\Flight::where('active', 1)->first();
//当需要抛出异常时~findOrFail
//同样会返回一个404响应
$model = App\Flight::where('legs', '>', 100)->f
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值