【发布时间】:2019-12-11 16:30:53
【问题描述】:
在我的应用中,用户和组织之间存在多对多关系,
用户
public function organisations()
{
return $this->belongsToMany('App\Organisation')->withPivot(['owner']);
}
组织
public function users()
{
return $this->belongsToMany('App\User')->withPivot(['owner']);
}
此关系上有一个数据透视列,用于说明用户是否是组织的所有者。
我正在努力测试这种关系,但我的测试返回了,
断言 null 匹配预期 1 失败。 预期:1 实际:null
这是我的测试功能,
public function testUserHasOwnershipOfOrganisations()
{
$userRow = factory(User::class)->create();
$organisation = factory(Organisation::class)->create();
$userRow->organisations()->attach($organisation->id, ['owner' => true]);
$user = User::first();
$ownOrganisations = $user->organisations()->wherePivot('owner', true);
$this->assertEquals($organisation->id, $ownOrganisations->first()->organisation_id);
}
上面的思维过程是做一个用户,做一个组织,建立关系。查询表中的第一个用户,获取他们的组织,并确保组织关系中的组织与我刚刚创建的ID相同。
谁能告诉我为什么这不能像我预期的那样工作?
谢谢
【问题讨论】:
标签: php laravel unit-testing phpunit eloquent-relationship