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

Mari kita bincangkan tentang cara menggunakan model dalam ThinkPHP 5.0

Apr 21, 2023 am 10:12 AM

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
{
}
Salin selepas log masuk
  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();
Salin selepas log masuk
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);
Salin selepas log masuk
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();
Salin selepas log masuk
(4) Kemas kini data

$user = User::get(1);

$user->name = 'Jack';

$user->save();
Salin selepas log masuk
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;
Salin selepas log masuk
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;
Salin selepas log masuk
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;
Salin selepas log masuk
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;
Salin selepas log masuk
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;
Salin selepas log masuk
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;
Salin selepas log masuk
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;
Salin selepas log masuk
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();
Salin selepas log masuk
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;
Salin selepas log masuk
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
    }
}
Salin selepas log masuk
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
    }
}
Salin selepas log masuk
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
    }
}
Salin selepas log masuk
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
    }
}
Salin selepas log masuk
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 Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara buku berfikir dan thinkpad Apakah perbezaan antara buku berfikir dan thinkpad Mar 06, 2025 pm 02:16 PM

Artikel ini membandingkan Lenovo's ThinkBook dan ThinkPad Laptop Lappt. ThinkPads mengutamakan ketahanan dan prestasi untuk profesional, sementara Thinkbooks menawarkan pilihan yang bergaya dan berpatutan untuk kegunaan seharian. Perbezaan utama terletak pada kualiti membina, p

Cara Mencegah Tutorial Suntikan SQL Cara Mencegah Tutorial Suntikan SQL Mar 06, 2025 pm 02:10 PM

Artikel ini menerangkan bagaimana untuk mencegah suntikan SQL dalam aplikasi ThinkPHP. Ia menekankan menggunakan pertanyaan parameter melalui pembina pertanyaan ThinkPHP, mengelakkan penggabungan SQL langsung, dan melaksanakan pengesahan input & sanitisasi yang mantap. AD

Bagaimanakah saya boleh menggunakan ThinkPhp untuk membina aplikasi baris arahan? Bagaimanakah saya boleh menggunakan ThinkPhp untuk membina aplikasi baris arahan? Mar 12, 2025 pm 05:48 PM

Artikel ini menunjukkan aplikasi baris arahan bangunan (CLI) menggunakan keupayaan CLI ThinkPHP. Ia menekankan amalan terbaik seperti reka bentuk modular, suntikan ketergantungan, dan pengendalian ralat yang mantap, sambil menonjolkan perangkap biasa seperti Inu

Bagaimana Menangani Kerentanan ThinkPhp? Bagaimana Menangani Kerentanan ThinkPhp? Mar 06, 2025 pm 02:08 PM

Artikel ini membincangkan kelemahan ThinkPHP, menekankan penampalan, pencegahan, dan pemantauan. Ia memperincikan pengendalian kelemahan tertentu melalui kemas kini, patch keselamatan, dan pemulihan kod. Langkah proaktif seperti konfigurasi selamat, input

Cara Memasang Perisian yang Dibangunkan oleh ThinkPhp Cara Memasang Tutorial Cara Memasang Perisian yang Dibangunkan oleh ThinkPhp Cara Memasang Tutorial Mar 06, 2025 pm 02:09 PM

Butiran artikel ini Pemasangan perisian ThinkPHP, meliputi langkah -langkah seperti memuat turun, pengekstrakan, konfigurasi pangkalan data, dan pengesahan kebenaran. Ia menangani keperluan sistem (versi PHP, pelayan web, pangkalan data, sambungan), pemasangan biasa

Cara Memperbaiki Kerentanan ThinkPhp Bagaimana Menangani Kerentanan ThinkPhp Cara Memperbaiki Kerentanan ThinkPhp Bagaimana Menangani Kerentanan ThinkPhp Mar 06, 2025 pm 02:04 PM

Tutorial ini menangani kelemahan berfikir biasa. Ia menekankan kemas kini yang kerap, pengimbas keselamatan (RIPS, Sonarqube, Snyk), semakan kod manual, dan ujian penembusan untuk pengenalpastian dan pemulihan. Langkah pencegahan termasuk selamat

Apakah pertimbangan utama untuk menggunakan ThinkPhp dalam seni bina tanpa pelayan? Apakah pertimbangan utama untuk menggunakan ThinkPhp dalam seni bina tanpa pelayan? Mar 18, 2025 pm 04:54 PM

Artikel ini membincangkan pertimbangan utama untuk menggunakan ThinkPhp dalam arkitek tanpa pelayan, memberi tumpuan kepada pengoptimuman prestasi, reka bentuk tanpa statik, dan keselamatan. Ia menyoroti faedah seperti kecekapan kos dan skalabiliti, tetapi juga menangani cabaran

Cara Menggunakan Tutorial ThinkPhp Cara Menggunakan Tutorial ThinkPhp Mar 06, 2025 pm 02:11 PM

Artikel ini memperkenalkan ThinkPhp, kerangka PHP sumber terbuka. IT memperincikan seni bina, ciri-ciri (penghalaan, interaksi pangkalan data), kelebihan (perkembangan pesat, kemudahan penggunaan), dan kekurangan yang berpotensi (potensi kejuruteraan, commun

See all articles