


How to customize a Model? Usage of ThinkPHP3.2 custom base class Model
The content of this article is about how to customize a Model? The usage of ThinkPHP3.2 custom base class Model has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
ThinkPHP provides a Model class for other Models to inherit. The Model class is the model class in MVC, which is the upper class that calls the persistence layer. It feels like there are a lot of problems with this description, but what can be done? However, this Model sometimes cannot meet some of our needs, so we need to customize a Model class. However, the customized Model must also inherit the Model class provided by TP, and use our customized Model class as the Model in our project. Base class. Why do I feel like I'm talking about tongue twisters, etc... I'm a little dizzy.
Boring requirements
When using the Java open source project JeeSite, I developed a bad habit of adding create_by, create_date, update_by, update_date, remarks and del_flag has several fields. If each table has these fields, then the above fields will be set when inserting each table, some of the fields will be updated when updating each table, and each record will be deleted when deleting. In fact, the del_flag field is set. There are many repeated operations, and some operation methods have been modified. Then, at this time, you need to customize your own Model as the base class of the project. This Model will be responsible for doing the things I mentioned above.
Customize a Model
Customize a Model. In the Model, at least re-implement the add, save, delete and select methods in the Model provided by TP.
The definition code is as follows:
<?php namespace Admin\Model; use Think\Model; /** * 项目中其他 Model 类的基类 * 该类继承自 TP 提供的基类 Model */ class BaseModel extends Model { /** * 继承基类 Model 的 add 方法 * 自动插入 id create_by create_date update_by update_date del_flag */ public function add($data='',$options=array(),$replace=false) { $data["id"] = $this->getUuid(); $data["create_by"] = ""; $data["create_date"] = date("Y-m-d H:i:s"); $data["update_by"] = ""; $data["update_date"] = date("Y-m-d H:i:s"); $data["del_flag"] = '0'; return parent::add($data, $options, $replace); } /** * 获得 未删除 的所有数据 * 记录是否被删除通过 del_flag 字段来进行确定 */ public function select($options=array()) { $map["del_flag"] = 0; $this->where($map); return parent::select($options); } /** * 获取 全部 的所有数据 */ public function selectAll($options=array()) { return parent::select($options); } /** * 更新数据 * 更新数据时,要更新 update_by update_date 两个字段 */ public function save($data='',$options=array()) { $data["update_by"] = ""; $data["update_date"] = date("Y-m-d H:i:s"); return parent::save($data, $options); } /** * 删除也是更新 * 设置 删除 标志位即可 */ public function delete($data='',$options=array()) { $data["del_flag"] = 1; return parent::save($data, $options); }
In this way, our BaseModel is defined, and the Model in the future project will no longer inherit TP. Model class, but inherits our custom BaseModel.
Inherit the base class we defined
The method of inheriting BaseModel is the same as the method of inheriting Model, except that when using use to introduce the namespace to the current scope, it needs to be modified to our naming space instead of using the namespace provided by TP. The code is as follows:
1 <?php 2 namespace Admin\Model; 3 use Admin\Model\BaseModel; 4 5 class TrunkModel extends BaseModel {
use The namespace introduced is Admin\Model\BaseModel, because the namespace of the BaseModel we defined is Admin\Model, because here TrunkModel and BaseModel are in the same namespace, so it is okay to omit use.
In this way, after we use the D method to instantiate the TrunkModel object, when using the add method to insert data, the add method in BaseModel will be called first, so that each of our tables has a series of create_by and so on. The fields will be automatically obtained.
Recommended related articles:
thinkphp5 framework and Android implement QR code generation code
Thinkphp batch downloads pictures and files Code example
Request code for post mode and get mode in curl of php
The above is the detailed content of How to customize a Model? Usage of ThinkPHP3.2 custom base class Model. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Alipay PHP...

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Session hijacking can be achieved through the following steps: 1. Obtain the session ID, 2. Use the session ID, 3. Keep the session active. The methods to prevent session hijacking in PHP include: 1. Use the session_regenerate_id() function to regenerate the session ID, 2. Store session data through the database, 3. Ensure that all session data is transmitted through HTTPS.

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...
