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
- 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
- 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!