Rumah  >  Artikel  >  rangka kerja php  >  Mari kita bincangkan tentang cara menggunakan model dalam ThinkPHP 5.0

Mari kita bincangkan tentang cara menggunakan model dalam ThinkPHP 5.0

PHPz
PHPzasal
2023-04-21 10:12:221289semak imbas

ThinkPHP 5.0 ialah salah satu rangka kerja pembangunan PHP yang paling banyak digunakan di China Ia bukan sahaja telah membuat banyak pengoptimuman dan penambahbaikan dalam kod teras, tetapi juga menambah banyak fungsi dan ciri baharu, antaranya model itu juga telah dibuat. sangat bertambah baik. Artikel ini akan memperkenalkan secara terperinci cara menggunakan model dalam ThinkPHP 5.0.

1. Apakah itu model

Model hanyalah kelas operasi data, digunakan untuk mengendalikan pangkalan data. Dalam ThinkPHP, model merangkum jadual data, membolehkan operasi yang mudah dan pantas pada jadual data. Apabila mencipta model, anda hanya perlu mewarisi ThinkModel dan bukannya menulis sejumlah besar pertanyaan dan pernyataan SQL.

2. Cipta model ringkas

  1. Mula-mula buat model dalam ThinkPHP 5.0

Dalam ThinkPHP 5.0, mencipta model adalah sangat mudah, Anda sahaja perlu mencipta direktori model baharu dalam direktori aplikasi, dan kemudian buat fail baharu bernama User.php dalam direktori model Kodnya adalah seperti berikut:

<?php

namespace app\model;

use think\Model;

class User extends Model
{
}
  1. Sambung ke pangkalan data<. 🎜>
ThinkPHP 5.0 menggunakan PDO untuk menyambung ke pangkalan data secara lalai, dan maklumat sambungan pangkalan data dikonfigurasikan dalam fail pangkalan data.php dalam direktori aplikasi. Selepas sambungan berjaya, anda boleh melakukan operasi yang sepadan dalam model.

    Operasi CRUD asas model
Dalam ThinkPHP 5.0, operasi CRUD asas model telah dirangkumkan dan boleh dipanggil terus. Ambil model Pengguna sebagai contoh untuk menunjukkan operasi CRUD yang paling biasa:

(1) Sisipkan data

$user = new User();

$user->name = 'Tom';
$user->age = 20;

$user->save();
Di atas ialah cara paling biasa untuk memasukkan data, membuat instantiate objek Pengguna , dan kemudian Berikan nilai kepada objek melalui atribut, dan akhirnya panggil kaedah save() untuk menyimpan data ke pangkalan data.

(2) Padamkan data

User::destroy(1);
Yang 1 di sini ialah ID data yang akan dipadamkan. Jika anda ingin memadamkan berbilang keping data, anda boleh menghantar tatasusunan. Anda juga boleh menggunakan kaedah where untuk pemadaman bersyarat.

(3) Data pertanyaan

// 查询所有数据
$users = User::all();

// 根据条件查询单条数据
$user = User::where('name', 'Tom')->find();

// 根据条件查询多条数据
$users = User::where('age', '>', 18)->select();
(4) Kemas kini data

$user = User::get(1);

$user->name = 'Jack';

$user->save();
Iaitu, tanya dahulu data yang hendak diubah suai, dan kemudian gunakan save( ) selepas mengubah suai kaedah data disimpan ke pangkalan data.

3. Model operasi perkaitan

Dalam pembangunan sebenar, selalunya perlu melakukan pertanyaan bersama yang kompleks dan operasi perkaitan pada berbilang jadual data. Model ThinkPHP 5.0 menyediakan operasi persatuan yang kaya yang boleh menyelesaikan masalah perkaitan antara jadual dengan cepat.

    Persatuan satu dengan satu
Dalam ThinkPHP 5.0, terdapat tiga cara persatuan satu dengan satu:

(1) Atribut daripada model yang berkaitan

class User extends Model
{
    public function profile()
    {
        return $this->hasOne('Profile');
    }
}

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}

$user = User::get(1);

$profile = $user->profile;
Dalam kod di atas, model Pengguna dikaitkan dengan model Profil melalui kaedah hasOne() dan kemudian atribut $user->profile dipanggil untuk mendapatkan yang berkaitan data.

(2) Pertanyaan berkaitan

$user = User::with('profile')->select();

$profile = $user->profile;
Dalam kod di atas, pertanyaan berkaitan dilakukan secara langsung melalui kaedah with(), dan kemudian atribut $user->profile dipanggil untuk mendapatkan data yang berkaitan.

(3) Pertanyaan bersepadu

$user = User::field('name')
            ->join('profile', 'profile.user_id=user.id')
            ->select();

$profile = $user->profile;
Dalam kod di atas, jadual Pengguna dan jadual Profil disambungkan melalui kaedah join() dan kemudian medan jadual Profil boleh diperolehi dalam ungkapan medan .

    Persatuan satu-ke-banyak
Dalam ThinkPHP 5.0, terdapat juga tiga cara persatuan satu-ke-banyak:

(1) Atribut model yang berkaitan

class User extends Model
{
    public function books()
    {
        return $this->hasMany('Book');
    }
}

class Book extends Model
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}

$user = User::get(1);

$books = $user->books;
Dalam kod di atas, model Pengguna dikaitkan dengan model Buku melalui kaedah hasMany(), dan kemudian atribut $user->books dipanggil untuk mendapatkan data yang berkaitan.

(2) Pertanyaan berkaitan

$user = User::with('books')->select();

$books = $user->books;
Dalam kod di atas, pertanyaan berkaitan dilakukan secara langsung melalui kaedah with(), dan kemudian atribut $user->books dipanggil untuk mendapatkan data yang berkaitan.

(3) Pertanyaan bersepadu

$user = User::field('name')
            ->join('book', 'book.user_id=user.id')
            ->select();

$books = $user->books;
Dalam kod di atas, jadual Pengguna dan jadual Buku disambungkan melalui kaedah join() dan kemudian medan jadual Buku boleh diperolehi dalam ungkapan medan .

    Persatuan many-to-many
Many-to-many association juga mempunyai tiga cara dalam ThinkPHP 5.0:

(1) Persatuan model utama atribut model

class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany('Role');
    }
}

class Role extends Model
{
    public function users()
    {
        return $this->belongsToMany('User');
    }
}

$user = User::get(1);

$roles = $user->roles;
Dalam kod di atas, model Pengguna dikaitkan dengan Role model melalui kaedah belongsToMany(), dan kemudian atribut $user->roles dipanggil untuk mendapatkan data yang berkaitan.

(2) Soal jadual perantaraan secara berasingan

$user = User::get(1);

$roles = $user->roles()
            ->where('status', '1')
            ->select();
Dalam kod di atas, panggil kaedah $user->roles() untuk mendapatkan jadual perantaraan, dan kemudian gunakan where () kaedah untuk melaksanakan pertanyaan bersyarat.

(3) Pertanyaan penyepaduan jadual perantaraan

$user = User::field('name,role.name as rolename')
            ->join('user_role','user_role.user_id=user.id')
            ->join('role', 'user_role.role_id=role.id')
            ->select();

$roles = $user->roles;
Dalam kod di atas, jadual Pengguna, jadual UserRole dan jadual Peranan disambungkan melalui kaedah join() dan kemudian ia boleh ditambah dalam ungkapan medan Dapatkan medan jadual Peranan.

4. Acara model

Acara model ThinkPHP 5.0 menyediakan banyak mata kait yang berguna dalam kitaran hayat model, membolehkan kami mengendalikan dan memproses data pada masa dan peringkat yang berbeza dengan mudah melaksanakan fungsi seperti pengesahan data, pengisian automatik dan pengemaskinian data. Peristiwa yang biasa digunakan termasuk yang berikut:

(1) Peristiwa prapertanyaan

class User extends Model
{
    protected static function onBeforeFind($query)
    {
        // before find event
    }
}
Dalam kod di atas, acara prapertanyaan ditambah melalui kaedah onBeforeFind().

(2) Peristiwa pra-masukkan

class User extends Model
{
    protected static function onBeforeInsert($data)
    {
        // before insert event
    }
}
Dalam kod di atas, tambahkan acara pra-masukkan melalui kaedah onBeforeInsert().

(3) Acara prakemas kini

class User extends Model
{
    protected static function onBeforeUpdate($data)
    {
        // before update event
    }
}
Dalam kod di atas, acara prakemas kini ditambah melalui kaedah onBeforeUpdate().

(4) Pra-padam acara

class User extends Model
{
    protected static function onBeforeDelete($data)
    {
        // before delete event
    }
}
Dalam kod di atas, tambahkan acara pra-padam melalui kaedah onBeforeDelete().

5

Melalui pengenalan artikel ini, kita dapat melihat bahawa model dalam ThinkPHP 5.0 adalah sangat mudah untuk digunakan dan menyokong operasi CRUD dan pertanyaan berkaitan yang biasa digunakan. Pada masa yang sama, acara model boleh melaksanakan fungsi dengan mudah seperti pengesahan data, pengisian automatik dan pengemaskinian data. Melalui penggunaan model pembelajaran yang mendalam, kecekapan pembangunan dapat dipertingkatkan dan proses pembangunan projek dapat dipercepatkan.

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menggunakan model dalam ThinkPHP 5.0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn