无法在 laravel 访问器(10 月 CMS)中获取属性



我目前正在与十月CMS合作一个项目,并尝试将标签列表与关系数据一起使用。 我正在使用自定义访问器从两列中获取全名,这似乎是一种非常常见的情况。

但我就是无法在访问器中获取模型的属性。

这是我的代码...

class NameOfClass extends Model
{
/** ALL THE CODE GENERATED BY OCTOBER CMS PLUGIN BUILDER */
public function getFullNameAttribute()
{
return $this->firstname." ".$this->lastname;
}
}

并调用field.yml文件中的访问器...

fieldName:
label: FieldName
descriptionFrom: description
type: taglist
mode: relation
nameFrom: full_name
customTags: false

我可以看到访问器被调用得很好,因为我可以通过将返回值更改为纯字符串来获取值。

我花了很多时间研究解决方案......知道吗?

我正在使用官方的十月cms码头工人镜像最新版本进行开发。

由于内部代码,这是不可能的。 所以我建议不要试图解决它。 它无法解决:)尝试替代

为什么??

因为从代码标签列表的设计方式可以与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
ref: https://octobercms.com/docs/backend/relations#introduction

如有任何疑问,请发表评论。

最新更新