モデルのアップグレード
ドキュメント
変更点
CI4 モデルは、自動データベース接続、基本的な CRUD、モデル内バリデーション、自動ページネーションなど、より多くの機能を備えています。
CodeIgniter 4 に名前空間が追加されたため、モデルは名前空間をサポートするように変更する必要があります。
アップグレードガイド
まず、すべてのモデルファイルを **app/Models** フォルダーに移動します。
php タグの直後に次の行を追加します:
namespace App\Models;
。namespace App\Models;
行の下に次の行を追加します:use CodeIgniter\Model;
。extends CI_Model
をextends Model
に置き換えます。CI3 の
$this->load->model('x');
の代わりに、コンポーネントの名前空間規則に従って、$this->x = new X();
を使用します。 あるいは、model()
関数を使用することもできます:$this->x = model('X');
.
モデル構造でサブディレクトリを使用する場合は、それに応じて名前空間を変更する必要があります。 例:バージョン 3 のモデルが **application/models/users/user_contact.php** にある場合、名前空間は 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 から組み込まれているためです。