PHP中的 trait 关键字的使用
说通俗点,PHP中使用trait关键字是为了解决一个类既想集成基类的属性和方法,又想拥有别的基类的方法,而trait一般情况下是和use搭配使用的。
<?php
trait Drive {
public $carName = 'trait';
public function driving() {
echo "driving {$this->carName}\n";
}
}
class Person {
public function eat() {
echo "eat\n";
}
}
class Student extends Person {
use Drive;
public function study() {
echo "study\n";
}
}
$student = new Student();
$student->study();
$student->eat();
$student->driving();
?>
输出结果如下:
study
eat
driving trait
二、软删除
在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。
要使用软删除功能,需要引入SoftDelete trait,例如User模型按照下面的定义就可以使用软删除功能:
<?phpnamespace app\index\model;use think\Model;use think\model\concern\SoftDelete;class User extends Model{use SoftDelete;protected $deleteTime = 'delete_time';}
定义好模型后,我们就可以使用:
// 软删除User::destroy(1);// 真实删除User::destroy(1,true);$user = User::get(1);// 软删除$user->delete();// 真实删除$user->delete(true);
默认情况下查询的数据不包含软删除数据,如果需要包含软删除的数据,可以使用下面的方式查询:
User::withTrashed()->find();User::withTrashed()->select();
User::onlyTrashed()->find();User::onlyTrashed()->select();
恢复被软删除的数据
$user = User::onlyTrashed()->find(1);$user->restore();
软删除仅对模型的删除方法有效,如果直接使用数据库的删除方法则无效,例如下面的方式无效(将不会执行任何操作)。
$user = new User;$user->where('id',1)->delete(详情查询 http://www.shouce.ren/api/view/a/15625 模型里的软删除
本文介绍了PHP中trait关键字的使用方法,通过实例展示了如何在一个类中集成多个基类的方法。同时,还详细解释了如何利用软删除特性提高数据库性能,并提供了具体的代码示例。
793

被折叠的 条评论
为什么被折叠?



