如果我这样做:
$obj = factory(Object::class)->make();
collect($obj);
我返回了以下类型的集合:
Illuminate\Support\Collection
Laravel还允许您使用其特定方法定义自己的集合。在模型中,您可以执行以下操作:
public function newCollection(array $models = [])
{
return new CustomCollection($models);
}
,您将以这样的方式在CustomCollection文件中创建CustomCollection:
class CustomCollection extends Collection
{
我想知道如何返回类型的集合:
Illuminate\Database\Eloquent\Collection
或者,在创建自己的自定义集合的情况下,如何返回类型为:
的集合App\Models\CustomCollection
我想使用collect()帮助器或出于编写PHPUnit测试目的而无法访问数据库的任何其他方式来实现此目的。
==========
编辑:我正在使用factory(Object :: class)-> make()欺骗我试图放入集合的雄辩的对象。
如果您只使用factory(Object :: class,1)-> make(),则工厂会将Object :: class的单个实例滚动到Eloquent集合中。
答案 0 :(得分:2)
collect()
助手仅创建Illuminate\Support\Collection
的新实例。
function collect($value = null)
{
return new Collection($value);
}
您可以对任何集合进行相同操作。
Illuminate \ Database \ Eloquent \ Collection
$collection = new Illuminate\Database\Eloquent\Collection($value);
App \ Models \ CustomCollection
$collection = new \App\Models\CustomCollection($value);
答案 1 :(得分:0)
因为您正在使用:
$obj = factory(Object::class)->make();
欺骗口才的对象,如果您只是这样做:
$collection = factory(Object::class, 1)->make()
factory()将Object :: class的单个实例滚动到一个Eloquent集合中。 “ 1”是所生成集合中对象的数量,因此如果您需要2个对象,则可以将其更改为2。