Laravel: collect() 助手 - 设置集合类型
Laravel: collect() helper - set type of collection
如果我这样做:
$obj = factory(Object::class)->make();
collect($obj);
我return编辑了一个类型的集合:
Illuminate\Support\Collection
Laravel 还允许您使用特定方法定义自己的集合。在模型中,您可以:
public function newCollection(array $models = [])
{
return new CustomCollection($models);
}
你会在文件 CustomCollection.php:
中这样开始你的 CustomCollection
class CustomCollection extends Collection
{
我想知道如何 return 类型的集合:
Illuminate\Database\Eloquent\Collection
或者,在创建我自己的自定义集合的情况下,我如何 return 类型的集合:
App\Models\CustomCollection
我想使用 collect()
帮助程序或任何其他我不访问数据库以编写 PHPUnit 测试的方式来执行此操作。
==========
编辑:我正在使用 factory(Object::class)->make()
来欺骗 Eloquent 我试图放入集合中的对象。
如果您只执行 factory(Object::class, 1)->make()
,工厂会为您将 Object::class
的单个实例滚动到 Eloquent 集合中。
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);
因为您正在使用:
$obj = factory(Object::class)->make();
欺骗 Eloquent 个对象,如果你只是这样做:
$collection = factory(Object::class, 1)->make()
factory()
为您将 Object::class
的单个实例滚动到 Eloquent 集合中。 1
是生成的集合中对象的数量,因此如果你想要 2 个对象,你可以将其更改为 2
,等等
如果我这样做:
$obj = factory(Object::class)->make();
collect($obj);
我return编辑了一个类型的集合:
Illuminate\Support\Collection
Laravel 还允许您使用特定方法定义自己的集合。在模型中,您可以:
public function newCollection(array $models = [])
{
return new CustomCollection($models);
}
你会在文件 CustomCollection.php:
中这样开始你的CustomCollection
class CustomCollection extends Collection
{
我想知道如何 return 类型的集合:
Illuminate\Database\Eloquent\Collection
或者,在创建我自己的自定义集合的情况下,我如何 return 类型的集合:
App\Models\CustomCollection
我想使用 collect()
帮助程序或任何其他我不访问数据库以编写 PHPUnit 测试的方式来执行此操作。
==========
编辑:我正在使用 factory(Object::class)->make()
来欺骗 Eloquent 我试图放入集合中的对象。
如果您只执行 factory(Object::class, 1)->make()
,工厂会为您将 Object::class
的单个实例滚动到 Eloquent 集合中。
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);
因为您正在使用:
$obj = factory(Object::class)->make();
欺骗 Eloquent 个对象,如果你只是这样做:
$collection = factory(Object::class, 1)->make()
factory()
为您将 Object::class
的单个实例滚动到 Eloquent 集合中。 1
是生成的集合中对象的数量,因此如果你想要 2 个对象,你可以将其更改为 2
,等等