【发布时间】:2019-03-10 01:42:28
【问题描述】:
我想,疯狂地解释原因,创建一个模拟 Eloquent 集合
我试过这个:
$collection = new \Illuminate\Database\Eloquent\Collection(
array(
new User( array( "id" => 1 ) ),
new User( array( "id" => 2 ) ),
new User( array( "id" => 3 ) ),
new User( array( "id" => 4 ) ),
new User( array( "id" => 5 ) )
)
);
$collection->get(); // Fails
但事实证明,这个集合没有 ->get() 方法,就像你通常做的那样,比如:
User::take( 2 )->get();
这最终是因为 \Illuminate\Database\Eloquent\Collection 只是一个命名空间并使用了 \Illuminate\Database\Collection
任何想法如何模拟实际正常工作的 Eloquent 集合?
【问题讨论】:
-
集合中没有
get。这是一个Query\Builder方法,通过Eloquent\Builder(在您的示例中通过User模型)调用。在这种情况下,收集是get调用的结果。原始Query\Builder将返回一个数组。
标签: php unit-testing laravel eloquent