namespace app\index\model;
use think\Model;
use think\Db;
class Base extends Model
{
public $user;
public $grade = null;
public function __construct($data = [],$user = '')
{
//执行model中的构造函数
parent::__construct($data);
//这个是需要的参数,传递用户等级信息的
$this->user = $user == '' ? ['user_id'=>0] : $user;
//下面这几行无关这个问题,仅仅是获取会员等级的折扣价格
if (config('member_discount') === true) {
$this->grade = cache('member_grade');
if ($this->grade === false) {
$this->grade = Db::name('member_grade')->cache('member_grade',3600*24*30)->column('discount','id');
}
}
}
}结果,如果是把function __construct($data = [],$user = ''),一切是正常的,可以显示数据,就是使用起来麻烦,比如需要$ba为了使用方便,我改成function __construct($user = '' , $data = []),结果数据全变成空的了。顺藤摸瓜找到这个函数
public function newInstance($data = [], $isUpdate = false, $where = null)
{
return (new static($data))->isUpdate($isUpdate, $where);
}发现这个函数好像是把每一行数据都变成了当前的model对象(这点搞不懂,这不浪费很多资源吗?),估计是这里面传参造成了问题。在此提出这个问题,一是想请各位大神给个实现不同会员价格折扣的更好的方法,二是想请大神给解释一下把每行数据重建当前模型的好处,本人小白一枚,恳请大神指点。
最佳答案