为什么laravel为一个有多个关系返回一个空数组



我使用的是jensegers/laravel-mongodb,我的模式如下

收票:

{
"_id": ObjectId("5f32d9bb486e94459b6531c3"),
"subject": ""URGENT" Non-Compliance In (Eastern Region)",
"content": "abc",
"user_team": "5f044199e40dfe4847056785",
"team_ids": [
"5f3012bbb7c2bc422e4da5a2"
],
"organization_id": "5f74359c7dcc8f6fbb2b47e2"
}

团队收藏:

{
"_id":ObjectId("5f3012bbb7c2bc422e4da5a2"),
"name": "Medical Maintenance",
"createTickets": true
}

票证模型中的关系:

public function teams()
{
return $this->HasMany('AppTeam', 'team_ids');
}

团队模型中的关系:

public function ticket()
{
return $this->belongsTo('AppTicket');
}

我面临着一个为团队关系获取数据的问题。它返回一个emtpry数组。

Laravel版本为6.2jensegers/mongodb版本是3.6

在hasMany的上下文中,您对外键的处理方法是错误的。相反,票证上应该有一个名为team_id的列,然后您可以执行以下操作。

public function teams()
{
return $this->HasMany('AppTeam', 'team_id');
}

如果你的票看起来是这样的话,那就行了。

{
"_id": ObjectId("5f32d9bb486e94459b6531c3"),
"subject": ""URGENT" Non-Compliance In (Eastern Region)",
"content": "abc",
"user_team": "5f044199e40dfe4847056785",
"team_id":"5f3012bbb7c2bc422e4da5a2"
"organization_id": "5f74359c7dcc8f6fbb2b47e2"
}

相反,看起来你实际上是在做多对多的比赛,因为一支球队可以有很多张门票,然后逆转。这可以这样定义,这可能会将数据添加到两个模型中,但我不是MongodbLaravel的专家。

public function teams()
{
return $this->belongsToMany(
Team::class, null, 'ticket_ids', 'team_ids'
);
}

您可以在文档中找到所有这些。

您可以指定外键和本地键。

示例:

public function teams()
{
$this->hasMany('AppTeam', 'team_ids', '_id')
}

最新更新