You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Laravel Eloquent模型集合批量调用setAppends()方法?

批量给Eloquent集合添加动态Append属性的简便方法

嘿,我完全懂你不想写foreach循环的心情!其实Laravel的集合本身就有现成的方法帮你批量处理所有模型实例,不用手动遍历~

方法一:用集合的each方法直接处理

这是最直接的方式,利用集合内置的each方法遍历每个模型并设置append属性,代码比手动foreach简洁很多:

$facilities = Facility::all()->each(function ($facility) {
    // 把你需要添加的额外属性名传进去
    $facility->setAppends(['custom_attribute', 'another_attribute']);
});

方法二:封装成集合宏,让调用更直观

如果你需要经常做这个操作,可以给集合注册一个自定义宏,这样以后就能像你最开始想的那样,直接在集合上调用setAppends方法:

首先在你的AppServiceProvider的boot方法里注册这个宏:

use Illuminate\Support\Collection;

public function boot()
{
    Collection::macro('setAppends', function ($attributes) {
        return $this->each(function ($model) use ($attributes) {
            $model->setAppends($attributes);
        });
    });
}

之后就可以非常简洁地调用了:

$facilities = Facility::all()->setAppends(['custom_attribute']);

这样做的好处是代码可读性更高,而且复用性强,整个项目里任何Eloquent集合都能直接用这个方法~

内容的提问来源于stack exchange,提问作者TheCapeGreek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:19:35