升级模型

文档

已更改的内容

  • CI4 模型具有更多功能,包括自动数据库连接、基本 CRUD、模型内验证和自动分页。

  • 由于已将命名空间添加到 CodeIgniter 4,因此必须更改模型以支持命名空间。

升级指南

  1. 首先,将所有模型文件移动到文件夹 app/Models

  2. 在 PHP 开始标签后添加此行:namespace App\Models;

  3. namespace App\Models; 行下面添加此行:use CodeIgniter\Model;

  4. extends Model 替换 extends CI_Model

  5. 现在,您将不再使用 CI3 的 $this->load->model('x');,而是使用 $this->x = new X();,遵循组件的命名空间约定。或者,您可以使用 model() 函数:$this->x = model('X');

如果您在模型结构中使用子目录,则必须相应地更改命名空间。示例:您有一个位于 application/models/users/user_contact.php 中的版本 3 模型,则命名空间必须是 namespace App\Models\Users;,并且版本 4 中的模型路径应如下所示:app/Models/Users/UserContact.php

CI4 中的新模型有很多内置方法。例如,find($id) 方法。使用此方法,您可以查找主键等于 $id 的数据。插入数据也比以前更容易。在 CI4 中,有一个 insert($data) 方法。您可以选择使用所有这些内置方法并将代码迁移到新方法。

您可以在 使用 CodeIgniter 的模型 中找到有关这些方法的更多信息。

代码示例

CodeIgniter 版本 3.x

路径:application/models

<?php

class User_contact extends CI_Model
{
    public function insert($name, $address, $email)
    {
        $this->db->insert('user_contacts', array(
            'name'    => $name,
            'address' => $address,
            'email'   => $email,
        ));
    }
}

CodeIgniter 版本 4.x

路径:app/Models

<?php

namespace App\Models;

use CodeIgniter\Model;

class UserContact extends Model
{
    // insert() method already implemented in parent
}

要插入数据,您可以直接调用 $model->insert() 方法,因为此方法自 CI4 起就已内置。