繁体   English   中英

Eloquent hasMany 没有 id 的关系

[英]Eloquent hasMany relation without id

我来计算有多少注册来自同一个国家。 到目前为止,我提出了以下解决方案:控制器内的方法:

class Camp extends Model // ...
{
    protected $with = ['registrations_nation_count',...];
    // ...

    public function registrations_nation_count()
    {
        return $this->hasMany(CampRegistration::class)
            ->select(['camp_id','nation',DB::raw('COUNT(*) as count')])
            ->groupBy('nation');
    }
}

这会生成以下输出:

      "registrations_nation_count": [
            {
                "camp_id": 1,
                "nation": "en",
                "count": 2
            },
            {
                "camp_id": 1,
                "nation": "fr",
                "count": 1
            }
        ]

现在我想从输出中删除 camp_id 列。 我已经尝试简单地从选择中删除它,但这导致根本没有输出。 有什么办法可以隐藏吗?

数据库:

+-------+--------------------+
| camps | camp_registrations |
+-------+--------------------+
| id    | id                 |
| ...   | camp_id            |
|       | nation             |
|       | ...                |
+-------+--------------------+

您不能不选择用于查询关系的列。 在您的示例中,这是父模型的id和相关模型的camp_id

我强烈建议不要在关系定义中使用->select([..])列。 它会不必要地限制关系的使用。

相反,您应该省略某种转换器(例如Eloquent resources )中的列,这些转换器转换资源以供最终用户查看。

您可能想要执行以下操作:

$camp->registrations_nation_count->makeHidden('camp_id');

使用 'with' 后

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM