问题描述
我目前正在使用October CMS开发一个项目,并尝试将标记列表与关系数据一起使用。 而且我正在使用自定义访问器从两列中获取全名,这似乎很常见。
这是我的代码...
class NameOfClass extends Model
{
/** ALL THE CODE GENERATED BY OCTOBER CMS PLUGIN BUILDER */
public function getFullNameAttribute()
{
return $this->firstname." ".$this->lastname;
}
}
fieldName:
label: FieldName
descriptionFrom: description
type: taglist
mode: relation
nameFrom: full_name
customTags: false
我可以看到访问器被调用得很好,因为我可以通过将返回值更改为纯字符串来获取值。
我花了很多时间研究解决方案……有什么主意吗?
我正在使用octobercms docker官方映像的最新版本进行开发。
解决方法
由于内部代码,因此不可能。所以我建议不要尝试解决它。它不能解决:)尝试替代方法
为什么?
由于代码标记列表的设计方式使其可以与TAGS
一起使用。
如果有allow to create new tags
,则它将no selected tag
;如果存在标签,则将attache
移至给定的记录。这一切都可以与real attributes
一起使用。
因此它不能设计为使用虚拟属性。
有关更多详细信息,这是代码如何生成标签的代码
public function getFieldOptions()
{
$options = $this->formField->options();
if (!$options && $this->mode === static::MODE_RELATION) {
$options = RelationBase::noConstraints(function () {
$query = $this->getRelationObject()->newQuery();
// Even though "no constraints" is applied,belongsToMany constrains the query
// by joining its pivot table. Remove all joins from the query.
$query->getQuery()->getQuery()->joins = [];
return $query->lists($this->nameFrom); // <==== LOOK HERE
});
}
return $options;
}
您可以看到此nameFrom
被直接传递给查询,而query/sql
则not know about our virtual field
不能正常工作。
您也可以使用
RelationController Behaviors
参考:https://octobercms.com/docs/backend/relations#introduction
如有疑问,请发表评论。