阅读(806) (8)

Laravel 8 自定义集合

2021-07-08 09:44:59 更新

如果你需要使用自定义 Collection 对象与自己的扩展方法一起使用, 可以在你的模型上重写 newCollection 方法:

<?php

namespace App\Models;

use App\Support\CustomCollection;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * 创建一个 Eloquent 集合实例
     *
     * @param  array  $models
     * @return \Illuminate\Database\Eloquent\Collection
     */
    public function newCollection(array $models = [])
    {
        return new CustomCollection($models);
    }
} 

一旦你定义了 newCollection 方法, 你将随时可以从你的自定义集合中接收一个 Collection 返回的一个模型实例.。如果要为应用程序的每个模型使用自定义集合,就应该重写所有模型扩展的基类模型中 newCollection 方法。