Laravel 5:模型上的fresh()在PHPUnit中不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5:模型上的fresh()在PHPUnit中不起作用相关的知识,希望对你有一定的参考价值。
我一直在尝试的是在测试中重新加载模型。
我一直在使用fresh()
,由于某些原因它不能用于测试。 (可能这是一个错误)
这是一个片段。
//There is a relationship between Order and OrderItem.
//One Order hasMany OrderItem
$order = factory(Order::class)->create([...]);
$orderItem = factory(OrderItem::class)->create([
'order_id' => $order->id,
]);
$response = $this->delete('/api/order/' . $order->id);
$response->assertResponseStatus(200);
//This passes.
$orderItem = $orderItem->fresh();
$this->assertEquals($orderItem->some_attribute, 0);
最后一行导致trying to get property of non-object
。
我把$orderItem = $orderItem->fresh();
变成了$orderItem->fresh();
这种方法根本没有刷新$orderItem
。
你看到我做错了吗?
任何建议将被认真考虑。
PS
$orderItem = OrderItem::find($orderItem->id);
我尝试了这种方法,这也导致了trying to get property of non-object
。
factory()
返回IlluminateDatabaseEloquentFactory
的实例
它没有实现任何fresh()
方法。
Model有fresh()
方法的实现。
fresh(array|string $with = []) //Reload a fresh model instance from the database.
和
OrderItem::find($orderItem->id);
返回集合。
这是你可以做的。
OrderItem::where('id', $orderItem->id)->fresh();
参考:
https://laravel.com/api/5.6/Illuminate/Database/Eloquent/Factory.html
希望这可以帮助
以上是关于Laravel 5:模型上的fresh()在PHPUnit中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
TokenMismatch ONLY 某些浏览器 - Laravel 5 Fresh/Production
LUMEN:如何修复 SQLSTATE [42000]:语法错误或访问冲突:laravel 流明上的 1071
PHP 5.6.9 上的 Laravel 5 TokenMismatchException