亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在 Laravel 訪問器中獲取屬性(10 月 CMS)

無法在 Laravel 訪問器中獲取屬性(10 月 CMS)

PHP
臨摹微笑 2023-11-03 20:07:22
我目前正在使用 October 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我可以看到訪問器被很好地調用,因為我可以通過將返回值更改為純字符串來獲取該值。我花了很多時間研究解決方案......有什么想法嗎?我正在使用官方 octobercms docker 鏡像最新版本進行開發。
查看完整描述

1 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

由于內部代碼,這是不可能的。所以我建議不要嘗試解決它。它無法解決:)嘗試替代方案

為什么 ??

因為 from code taglist 的設計方式使其可以與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/sqlnot know about our virtual field是行不通的。

或者,您可以使用RelationController Behaviors

如有疑問請評論。


查看完整回答
反對 回復 2023-11-03
  • 1 回答
  • 0 關注
  • 150 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號