在开发中遇到很奇怪的问题,就是我用D()方法去继承Model的时候,总是使用不到里面的方法。参数怎么传递,都是无效的。
控制器
indexController.class.php
namespace Admin\Controller;
use Think\Controller;
class MemberController extends Controller
{
public function index()
{
$w['status'] = 3;
D('member')->getList($w);
}
}
模型
indexModel.class.php
namespace Admin\Model;
use Think\Model;
class MemberModel extends Model
{
protected $fields = 'id,name,email';
public function getList($d)
{
$this->where($d)->select();
}
}
这样看起来是不是一点没毛病啊,但是,当我用$this->_sql();打印出执行的sql语句的时候,就会发
现,这里的where(),没有起到作用,意思就是说没有使用到Model里面的方法。
在这里我就很奇怪了,这是为什么呢?
于是,我就去查看Model类。
通过比对发现,我这里用$fields,把Model里面定义的值覆盖了。所以说,我们要把上面自定义的属性
给重新的命名下,就可以了。