In meinem Benutzermodell habe ich also eine Funktion fullname, die den vollständigen Namen des Benutzers zurückgibt:
/** * @return Attribute */ public function fullname(): Attribute { return new Attribute( get: fn () => trim($this->firstname . ' ' . $this->lastname), ); }
Es funktioniert wie erwartet, jetzt möchte ich OpenAPI-Anmerkungen zu meinem Modell hinzufügen: Folgendes habe ich getan:
class User extends Authenticatable { ... protected $appends = [ 'fullname' ]; #[OAProperty(type: "string", example: "Jhon")] private $firstname; #[OAProperty(type: "string", example: "Doe")] private $lastname; /** * @return Attribute */ public function fullname(): Attribute { return new Attribute( get: fn () => trim($this->firstname . ' ' . $this->lastname), ); } }
Zu diesem Zeitpunkt funktioniert die Funktion nicht mehr wie erwartet:
$this->firstname and $this->lastname
Keine Rückgabe von Nullwerten mehr.
Problem: Ich möchte die Kommentare behalten, aber auch dafür sorgen, dass die Funktion funktioniert.
Hinweis: Wenn Sie Ihre Benutzer über eloquente Ex erreichen. ( User::all()->first(); ) Wir haben den Vor- und Nachnamen, aber nicht den vollständigen Namen, danke für die Hilfe
https://github.com/DarkaOnLine/L5-Swagger/issues/157
根据这个问题: 在模型上定义属性会产生很多 eloquent 的问题
我找到了 3 种方法来解决这个问题:
选项 1:您需要进行的重构量最少
保留注释并删除属性定义,例如: 这:
will become 这:
注意:属性或注释必须位于变量或函数之上,否则会产生错误。
选项 2:更干净,但增加了更多工作
将您的开放 API 声明放在其他地方。例如:
选项 3: 这就是我使用的
将您的属性添加到架构声明中 示例: