Laravel - MySQL数据库的使用详解4(Eloquent ORM用法1:创建模型)

作者: hgphp 发布时间: 2019-09-13 浏览: 805 次 编辑

  Laravel 拥有两个功能强大的功能来执行数据库操作:Query Builder(查询构造器)和 Eloquent ORM。在前面的文章中,我演示了 Query Builder 的使用,下面我来介绍下后者:Eloquent ORM

六、Eloquent ORM 基础

1,什么是 Eloquent ORM?

    Laravel 内置的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现,每张数据表都对应一个与该表进行交互的模型(Model),我们通过模型类可以对数据表进行查询、插入、更新、删除等操作。

2,创建模型

(1)在使用 Eloquent ORM 之前,我们需要在项目中先配置一下数据库连接,具体可以参考我之前的这篇文章:

(2)假设我们有个用户表(Users),结构如下:

原文:Laravel - MySQL数据库的使用详解4(Eloquent ORM用法1:创建模型)

(3)接着我们就要创建对应的模型(User.php)用来对这张表进行操作。这里我们把模型都放在 app/Models 下。

原文:Laravel - MySQL数据库的使用详解4(Eloquent ORM用法1:创建模型)


(4)User.php 里面内容很简单,我们只需要让模型类继承 Model,后面就可以使用了。不需要指定关联的表名,也不需要定义模型的字段属性。

<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
 
class User extends Model {
}


3,手动指定关联的表名

(1)前面我们并没有告诉 User 模型会使用哪个数据库表。此时系统会默认自动对应名称为「类名称的小写复数形态」的数据库表。所以,在上面的例子中, Eloquent 会假设 User 模型将把数据存在 users 数据库表。

(2)我们也可以在模型中定义 $table 属性来指定自定义的表名:

<?php
 namespace App\Models;
 use Illuminate\Database\Eloquent\Model;
 class User extends Model {
  /**
     * 关联到模型的数据表
     *
     * @var string
     */
    protected $table = 'my_users';
}

4,手动指定主键(Primary Keys)

Eloquent 默认每张表的主键名为 id,我们可以在模型中定义 $primaryKey 属性来指定其他的字段:

<?php
 namespace App\Models;
 use Illuminate\Database\Eloquent\Model;
 class User extends Model {
  /**
     * 指定主键字段
     *
     * @var string
     */
    protected $primaryKey = 'uid';
}

5,时间戳(Timestamps)

(1)默认情况下,Laravel 会认为你的表中自带有 created_at 和 updated_at 这两个字段,并会在生成数据的时候自动填充。

(2)如果我们的表中没有这两个字段或者不想自动管理它们,可以将其关掉:

<?php
 namespace App\Models;
 use Illuminate\Database\Eloquent\Model;
 class User extends Model {
  public $timestamps = false;
}

(3)我们还可以修改时间戳在数据库中的存储格式(默认从年存到秒),还有从数据库中读出来的显示格式:

具体时间格式有哪些可以参考 PHP 官方手册:https://www.php.net/manual/en/datetime.createfromformat.php

<?php
 namespace App\Models;
 use Illuminate\Database\Eloquent\Model;
 class User extends Model {
  // 时间戳格式化形式
  protected $dateFormat = 'U';
}

6,指定数据库连接

默认情况下,所有的 Eloquent 模型使用应用配置中的默认数据库连接。如果我们想要为模型指定不同的连接,可以通过 $connection 属性来设置(当然,这个数据库也必须事先在 config 里面配置过):

<?php
 namespace App\Models;
 use Illuminate\Database\Eloquent\Model;
 class User extends Model {
  // 指定这个模型对应的数据库连接
  protected $connection = 'connection-name';
}

原文链接:https://www.hangge.com/blog/cache/detail_2382.html


Laravel - MySQL数据库的使用详解系列:

1,Laravel - MySQL数据库的使用详解1(安装配置、基本用法)4,Laravel - MySQL数据库的使用详解4(Eloquent ORM用法1:创建模型)7,Laravel - MySQL数据库的使用详解7(Eloquent ORM用法4:插入、更新数据)
2,Laravel - MySQL数据库的使用详解2(Query Builder用法1:查询操作)5,Laravel - MySQL数据库的使用详解5(Eloquent ORM用法2:基本查询、动态范围)8,Laravel - MySQL数据库的使用详解8(Eloquent ORM用法5:删除数据)
3,Laravel - MySQL数据库的使用详解3(Query Builder用法2:新增、修改、删除)6,Laravel - MySQL数据库的使用详解6(Eloquent ORM用法3:模型关联、关联查询9,Laravel - MySQL数据库的使用详解9(Eloquent ORM用法6:事件、订阅、观察者)