最近在使用Faker与sqLite内存数据库进行Laravel测试时,我有这个奇怪的问题,其中我的模型有一个工厂,除了第一个变量成为表格的主键)正确设置。Laravel 5/Faker - 工厂数据更改
让我们进一步解释,我指向的变量使用以下规则在工厂:
'kvk' => strval($faker->randomNumber(9)),
因此,它应该成为包含9位数字的字符串。现在,下一步是从我的控制器测试调用工厂,我也有一个使用这种“KVK”变由我公司作为一个外键引用另一个用户模式:
$this->_company = factory(Company::class)->create([ 'address_id' => $this->_address->id ]);
$this->_user = factory(User::class)->create([ 'kvk' => $this->_company->kvk ]);
但是当我把回声$此 - > _公司 - > KVK;在这两者之间,它表明'kvk被设置为1,由于我放在我的工厂的规则,这应该是不可能的。
最后用户用来嘲笑测试会话,并也用来请检查是否我应该有权利使用下面的检查,以编辑地址:
$user = Auth::user();
$company = Company::where('kvk', $user->kvk)->first();
$address = Address::whereId($id)->first();
if($company->address_id != $address->id)
{
return abort(403);
}
所以首先我获取当前登录的用户(这是模拟到上面创建的用户,这完美的工作。接下来我得到公司与该用户相关联(应该是上面创建的公司,因为我使用公司 - > KVK作为外键参考) ,但是当我输出保存的公司到我的日志时,我看到kvk被设置为一个9位数的字符串,就像它应该的那样。
我真的不能指责为什么一开始kvk设置为1,然后在我的测试中,它应该是完美的,但是我的测试失败了,因为在我的用户中设置了错误的引用,所以它可以找不到合适的公司。你有什么想法是什么原因呢?我也尝试在创建工厂时明确设置'kvk',但这也不起作用,并且将继续输出1.