Model Joomla 3模型上的过滤器_字段

Model Joomla 3模型上的过滤器_字段,model,joomla3.0,Model,Joomla3.0,我买了“学习Joomla!3扩展开发,第三版”。这本书很棒!作为Joomla的新手!在开发方面,构建新组件对我的第一份工作有很大帮助。但是,我仍然不了解模型构造功能: public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id',

我买了“学习Joomla!3扩展开发,第三版”。这本书很棒!作为Joomla的新手!在开发方面,构建新组件对我的第一份工作有很大帮助。但是,我仍然不了解模型构造功能:

public function __construct($config = array())
{
    if (empty($config['filter_fields']))
    {
        $config['filter_fields'] = array(
            'id', 'a.id',
            'title', 'a.title',
            'state', 'a.state',
            'company', 'a.company',
            'image', 'a.image',
            'url', 'a.url',
            'phone', 'a.phone',
            'description', 'a.description',
            'ordering', 'a.ordering', 'a.catid'
        );
    }

parent::__construct($config);
}
“id”和“a.id”、“title”和“a.title”、“phone”和“a.phone”等之间的关系是什么?威尔·乔姆拉!自动分配数据库表中的值还是什么?当我将“电话”更改为“电话”时,我无法检索数据。
感谢您的光临。

如果您在查询中使用列前缀,您还可以将它们与列名一起指定(例如“b.id”)

关于您的问题,您可以在


BR Perino

数据库表使用文本“phone”作为实际字段名。在本例中使用b.phone在进行各种查询时继续表示为“phone”

如果要使用名称“telephone”,则必须将数据库表中的实际名称更改为“telephone”。然后,您的新过滤器字段将是电话,b.telephone


我同意这本书很棒。

我对此也感到困惑。我找到了一个。显然,这只是一个允许字段名的白名单,仅此而已

此设置的值只是允许在查询中使用的字段名的白名单。你可以看到,我们有很多标准的字段名。我们还添加了一些特定于查询的名称变体,以防使用此模型的其他人想要使用它们。这就是全部。当您单击其中一个列表标题时,它将为请求中的列表设置排序列。我们知道模型中的populateState方法将从请求中提取这个值,当它提取时,它将根据这个白名单检查它。如果请求的排序列不在白名单中,它将安全地恢复为默认排序