Tetapan awalan jadual: awalan dalam fail config/database.php config/database.php 文件里 prefix 二、模型操作在模型中除了可以调用数据库类的方法之外(换句话说,数据库的所有查询构造器方法模型中都可以支持),可以定义自己的方法,所以也可以把模型看成是数据库的增强版 1、find 查询数据 find 获取单条数据,返回的是当前模型的对象实例 namespace appmodel; use thinkModel; class Goods extends Model{ public function find(){ $find = Goods::find(6); $find = Goods::where('id',7)->find(); return $find; } }
2、controller 怎么调用model namespace appcontroller; use appmodelGoods; class Index{ public function index(){ $db = new Goods(); $index = $db->find(); print_r($index); } }
find(6) 查询失败,是因为数据库主键名称不是 id 3、select 查询数据 select 获取多条数据,返回的是当前模型的对象实例 public function select(){ $select = Goods::select(); $select = Goods::select(6); $select = Goods::where('id','>',7)->select(); return $select; }
4、数据转换 toArray 方法将当前的模型实例输出为数组
public function select(){ $select = Goods::select(); $select = Goods::select(6); $select = Goods::where('id','>',7)->select(); return $select->toArray(); }
5、增加数据 create
- Langkah 1 : Buat direktori pada tahap yang sama dengan pengawal, nama direktori:
model
Langkah 2: Buat Goods.php dalam model kod> fail2. Operasi modelSelain memanggil kaedah kelas pangkalan data dalam model (dengan kata lain, semua kaedah pembina pertanyaan pangkalan data boleh disokong dalam model) , anda boleh Tentukan kaedah anda sendiri, jadi anda juga boleh menganggap model sebagai versi pangkalan data yang dipertingkatkan- Kaedah tersuai dalam fail model tidak sepatutnya sama dengan kaedah thinkphp Name🎜🎜
- 🎜 Barang::
dalam model juga boleh digunakan static:: kata kunci🎜🎜- 🎜 Operasi rantaian boleh digunakan dalam model Gunakan 🎜🎜🎜🎜1, cari untuk menanyakan data 🎜🎜cari untuk mendapatkan sekeping data yang dikembalikan ialah contoh objek model semasa 🎜🎜 🎜model aplikasi ruang nama;🎜🎜gunakan thinkModel;🎜🎜barangan kelas memanjangkan Model{ 🎜🎜 fungsi awam find(){🎜🎜 $find = Barang::find(6);🎜🎜 $find = Barang::where('id' ,7)->find();🎜🎜 kembalikan $find; 🎜🎜 }🎜🎜}🎜
🎜2 . menggunakan menggunakan menggunakan menggunakan menggunakan ' 's ' melalui keluar menggunakan 's ' menggunakan ‐ keluar keluar melalui '' ' ‐ ‐ ‐ ‐ ‐‐‐‐‐w antara Pertanyaan find(6) gagal kerana nama kunci utama pangkalan data bukan id🎜🎜3 select Data pertanyaan🎜🎜select mendapat berbilang keping data dan mengembalikan contoh objek model semasa🎜🎜🎜fungsi awam pilih (){🎜🎜 $select = Barang::select();🎜🎜 $select = Barang::select(6);🎜🎜 $select = Barang ::di mana('id','>',7)- >select();🎜🎜 Kembalikan $select;🎜🎜}🎜🎜4. Penukaran data🎜🎜kepada Array kaedah mengeluarkan contoh model semasa sebagai tatasusunan🎜🎜🎜fungsi awam pilih (){🎜🎜 $select = Barang::select();🎜🎜 $select = Barang::select(6);🎜🎜 $select = Barang ::where('id','>',7)- >select();🎜🎜 return $select->toArray();🎜🎜}🎜🎜5 style="list-style-type: disc;">- 🎜
create Kaedah statik menambah data dan mengembalikan contoh objek model semasa🎜🎜🎜🎜🎜public function create(){🎜 🎜 $create = Barang::create([🎜🎜 "cat" = > 3,🎜 ‐ ‐ ‐ 'title' => // Anda boleh terus mendapatkan ID yang meningkat sendiri Return $create; } Prinsip amalan terbaik untuk menambah data: gunakan kaedah cipta untuk menambah data, dan gunakan saveAll untuk menambah data dalam kelompok. 6. Ubah suai datakemas kini Kaedah statik mengubah suai data dan mengembalikan contoh objek model semasa simpan Selepas mengambil keluar data, tukar medan untuk mengemas kini data. Kaedah ini ialah cara terbaik untuk mengemas kini
namespace appmodel;namespace appmodel; use thinkModel; class Goods extends Model{ public function update(){ # 更新方式1 $update = Goods::update( ['price'=>'99.99'], ['id'=>22] ); return $update; # 更新方式2 $user = Goods::find(23); $user->price = '102.99'; $save = $user->save(); return $save; } }
7、删除数据 public function delete(){ # 删除方法1 $delete = Goods::where('id',3)->delete(); # 删除方法2 $delete = User::destroy(4); return $delete; }
TP模型如果只能增删查改,不如在 Controller barangan kelas memanjangkan Model{ kemas kini fungsi awam(){ #Kaedah kemas kini 2 pulangkan $kemas kini; 🎜 # Kaedah Kemas Kini 2🎜🎜 $pengguna = Barang::cari(23);🎜🎜 keluar keluar melalui keluar menggunakan ' ' s ' through ' s ' through ‐ ‐ ‐ ‐‐‐ melalui melalui ‐ ‐ ‐ ‐‐ ‐‐‐‐ ‐ ‐ 🎜🎜 }🎜🎜}🎜🎜 🎜🎜 padamkan data.<🎜🎜 >Kaedah statik memadam data dan mengembalikan contoh objek model semasa🎜🎜🎜musnahkan Padam mengikut kekunci utama🎜🎜fungsi awam delete(){🎜🎜 # Padam kaedah 1🎜🎜 $padam = Barang::di mana('id',3)->padam( );🎜🎜 #Padam kaedah 2🎜🎜 $padam = Pengguna::musnah(4);🎜🎜 pulangkan $padam ;🎜🎜}🎜🎜🎜Jika model TP hanya boleh ditambah, dipadam, disemak dan diubah suai, lebih baik menggunakan Controller code>dilaksanakan. Model TP mempunyai banyak ciri, yang diperkenalkan satu demi satu di bawah🎜🎜3 Tetapan model🎜🎜Untuk menyesuaikan diri dengan pangkalan data dengan lebih baik, model boleh menetapkan sifat pangkalan data yang sepadan terlebih dahulu, dan mengkonfigurasi satu jadual data dalam satu fail. 🎜Attribute | Deskripsi | nama | Nama model (bersamaan dengan nama jadual tanpa akhiran dan akhiran jadual data, lalai ialah nama kelas model semasa) | nama jadual | | (lalai automatik mendapatkan) | PK | Primary Nama Kunci (lalai adalah ID) | Schema | Bidang dan Jenis Data yang sepadan dengan Model ditukar secara automatik | tidak digunakan | Jadual data medan terbengkalai (tatasusunan) | 1. nama dan jadual Apabila jadual data anda tidak mempunyai awalan, tiada perbezaan dalam takrifan nama dan atribut jadual Anda boleh mentakrifkan salah satu class Barang memanjangkan Model{ protected $name = 'Barang. '; protected $table = 'shop_goods'; public function select(){ $select = Goods::select(); return $select->toArray(); } } . COLUMN `id` `shop_id ` int(10) UNTIGNED NOT NULL AUTO_INNCREMENT ULASAN ' ID Produk' DIDAHULUKAN, LEPASKAN KUNCI UTAMA,TAMBAHKAN KUNCI UTAMA (`shop_id`) MENGGUNAKAN BTREE;{s extend protected $name = 'Barang'; protected $table = 'shop_goods'; protected $pk = 'shop_id'; public function find($id=1){ $find = Barang::find ($id); return $find->toArray(); } } 3 Tetapkan medan dan jenis jadual data yang sepadan dengan model Ia akan diperoleh secara automatik lalai (termasuk jenis medan), tetapi pemerolehan automatik akan menyebabkan peningkatan A atribut pertanyaan setelah ditakrifkan, jenis medan jadual data yang lengkap mesti ditakrifkan Jenis ditakrifkan mengikut jenis data php Jika ia adalah jenis json, ia boleh ditakrifkan secara langsung sebagai jsonschema
- class Barangan memanjangkan Model { protected $name = 'Barang';
- protected $table = 'shop_goods'; protected $pk = ' shop_id';
- protected $schema = [ 'shop_id' => 'int',
gunakan menggunakan ' ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ 'kucing' => keluar ‐ ‐ ‐‐ ‐ ke 'stok' => 'int', 'status' => 'int', 'int' ]; # Tentukan jenis medan yang perlu ditukar secara automatik , anda boleh menggunakan atribut jenis protected $type = [ ] 'shop_id' => 'int' ]; public function select(){ $select = Barang::select(); ; dilindungi $pk = 'shop_id'; dilindungi $disuse = [ 'diskaun',disuse 'stok'
] ; fungsi awam pilih(){ $ pilih = barang :: pilih (); Kembalikan $ pilih- & gt; Property | description | Suffix | Data Jadual Suffix (lalai kosong) | Koneksi | Database Connection (Konfigurasi Pangkalan Data Pembacaan Lalai) | Query | Queries yang digunakan oleh model Nama kelas | medan | Senarai medan (tatasusunan) yang model membenarkan penulisan | ketat | Sama ada medan peka huruf besar-besaran (lalai adalah benar) | hanya dibaca | | . autoWriteTimestamp Tulis cap waktu yang dibuat dan dikemas kini secara automatik medan (lalai dimatikan) | | createTime Cipta medan cap masa | | kemas kiniMasa Kemas kini medan cap masa | | sedang digunakan untuk memadamkan medan lembut digunakan untuk memadamkan masa anda | lembut | def aultSoftDelete | Definisi Nilai lalai untuk medan yang dipadam lembut | 4. Fungsi utama model1. Getter class Goods extends Model{ public function index(){ $find = Goods::find(10); echo $find->status; return $find->toArray(); } public function getStatusAttr($v){ $status = [ 1=>'开启', 2=>'关闭' ]; return $status[$v]; } }
2、修改器 修改器的主要作用是对模型设置的数据对象值进行处理 命名规则: set + 字段名 + Attr
class Goods extends Model{ public function index(){ $create = Goods::create([ 'cat' => 3.33, 'title' => '新商品', 'price' => '59.99', 'add_time' => time() ]); return $create; } public function setCatAttr($v,$all){ // $all 全部参数 return (int)$v; } }
3、搜索器 Nama medan ialah penukaran kotak unta bagi medan jadual dataclass Barang memanjangkan Model{ indeks fungsi awam(){ $find->status; , , ,,,,,,,,, Hidupkan', 2=>'Tutup' mengembalikan $status[$v]; Peraturan penamaan: set + nama medan + Attr class Barang memanjangkan Model{ indeks fungsi awam(){ $create = Barang::create ([ 🎜 ' => masa()🎜🎜 ]);🎜🎜 🎜}🎜🎜 🎜3. Pencari🎜🎜🎜🎜Fungsi pencari adalah untuk merangkum ungkapan keadaan pertanyaan medan (atau pengecam carian)🎜 🎜🎜🎜Peraturan penamaan: carian + nama medan + Attr🎜🎜 🎜🎜🎜kelas Barangan memanjangkan Model{🎜🎜 indeks fungsi awam(){🎜🎜 $select = Barang::withSearch(['title '],[🎜🎜 ]) -> ;select();🎜🎜 ,,, ,,,,,,,,,,; $v . Semak data🎜Anda mesti menggunakan kaedah isEmpty set data bantah untuk menilai barangan kelas memanjangkan Model{ indeks fungsi awam(){ $select = Barang::where('title','1')->select(); if( kosong($select)){ echo 111; 5. Senarai di sebelah kanan ditukar kepada contoh modelkod model namespace appmodel;gunakan thinkModel;gunakan thinkfacadeDb; barangan kelas memanjangkan Model{ dilindungi $name = 'Barang'; dilindungi $table = 'kedai_barang'; public function get_all($ where,$order='add_time DESC',$p=1,$ jumlah=10){ $count = Barang::where($where)->count(); $list = Barang::where ($where) jika($list->is Empty(( )){ pulangan null; 'kucing'] = Db::table(' shop_cat')->where('id',$data_v['cat'])->value('name'); } $arr = [ 'bilangan' => siling($ kiraan/$jumlah), $data $status = [ ; ; ; 'Tutup ' Tarikh kembali('Y-m-d ',$v); } } kod pengawal indeks fungsi awam(){ $title = '商城'; $log masuk = '欧阳克'; # 左侧菜单t; di mana('fid',0)->select(); $left = []; foreach($menu as $menu_k=>$menu_v){ $left[$menu_k] = $menu_k] ; $left[$menu_k]['lists'] = Db::table('shop_menu')->where('fid',$menu_v['id'])->select(); } # 右侧列表 $param = Permintaan::param(); if(isset($param['status']) && $param['status'] == 1){ 🎎 ['status'] = 1; } else if(isset($param['status']) && $param['status'] == 2){ $where['status'] = 2; }lain{ $di mana = benar; } $p = isset($param['p']) ? $param['p'] : 1; $db = Barang baharu(); $pesanan = [
'tambah_masa DESC', ; DESC $betul = $db->get_all($where,$order,$p,5); View::assign([ 'title' => $title, 'log masuk' => $log masuk, . ; $p, 'status' => isset($param['status']) ? html代码 <td>{$right_v.status}</td><td>{$right_v.add_time}<事件 模型事件是指在进行模型的查询和写入操作的时候触发的操作行为國可调用模型的方法生效,使用查询构造器操作是无效的Nombor | Acara | Penerangan | Nama kaedah acara | 1 | after_fread | 2 | sebelum_masukkan | Tambah sebelum padaSebelumMasukkan | | 3 | after_insert | AfterInsertonAfterInsert | | 4 | before_update | Sebelum Kemas Kini 5 | selepas_kemas kini | Selepas kemas kini | padaAfterUpdate | 6 | sebelum_tulis | sebelum menulis | padaSebelumTulis | 7 | selepas_tulis | selepas menulis | onAfterWrite | 8 | sebelum_padam | sebelum pemadaman | padaSebelumPadam | 9 | selepas_padam | selepas pemadaman | selepas pemadaman | selepas pemadaman 10 | before_restore | beforrestore | onBeforeRestore | 11 | after_restore | AfterRestore | onAfterRestore |
namespace app\model;
use think\Model;
class Goods extends Model{
public function one_update(){
$update = Goods::update(
['price'=>'99.99'],
['id'=>22]
);
return $update;
}
# 执行更新操作,就会之下onBeforeUpdate方法
public static function onBeforeUpdate($goods){
print_r($goods->price);
return true;
}
}
|