在对象加载时检索 Laravel 模型中的自定义属性
问题:
您希望在模型加载时访问 Laravel/Eloquent 模型上的自定义属性/属性,而不依赖于手动循环。
解决方案:
Laravel 8 :
使用 getter 函数将自定义属性定义为属性:
<code class="php">class EventSession extends Eloquent { public function availability() { return new Attribute( get: fn() => $this->calculateAvailability() ); } }</code>
Laravel 8-:
方法 1: 将您的自定义属性附加到 $appends 数组并创建相应的访问器:
<code class="php">class EventSession extends Eloquent { protected $appends = ['availability']; public function getAvailabilityAttribute() { return $this->calculateAvailability(); } }</code>
方法 2: 重写 toArray() 方法以显式包含您的属性:
<code class="php">class Book extends Eloquent { public function toArray() { $array = parent::toArray(); $array['upper'] = $this->upper; return $array; } public function getUpperAttribute() { return strtoupper($this->title); } }</code>
方法 3: 迭代 toArray() 中的变异属性:
<code class="php">class Book extends Eloquent { public function toArray() { $array = parent::toArray(); foreach ($this->getMutatedAttributes() as $key) { if (!array_key_exists($key, $array)) { $array[$key] = $this->{$key}; } } return $array; } public function getUpperAttribute() { return strtoupper($this->title); } }</code>
以上是如何在对象加载时检索 Laravel 模型中的自定义属性?的详细内容。更多信息请关注PHP中文网其他相关文章!