所以我有两个数据库:-塔站点列表。-这些站点上的接入点列表。(有些网站没有接入点)。
假设我有sites (A,B,C),它有site_id of 1,2,3。
Site A有3接入点,B有4,C有0。
所以我想要一个只返回有访问点的站点的表。所以应该只返回A和B。
我为每个人都有一个模型,有他们的所有信息,并通过ID在网站和site_id在AccessPoints链接他们。
使用Eloquent运行什么查询比较好?
现在我正在运行:
$sites = Sites::with(['AccessPoints' => function($query) {
$query->where('status', '=', 'production');
}])
->with('AccessPoints.Associations')
->orderBy('name', 'asc')
->get();只是为了给你一些启示。production状态告诉数据库访问点是否仍然存在以及是否正在使用。所以生产意味着它仍然存在。因此,任何没有生产状态的访问点的站点都不应该显示。
with(AccessPoints.Associations)是第二个查询,它链接第三个表,以获得使用每个正常工作的接入点的人数。但是查询的第一部分并不是这样的,我仍然得到了一些aps已经退役或者根本没有aps的站点。
发布于 2019-02-06 01:21:54
您当前的查询将为您提供所有访问点,因为您没有has条件。下面会给出你想要的结果:
<?php
$sites = Sites::whereHas('AccessPoints', function($q){
$q->where('status', '=', 'production');
})
->with('AccessPoints.Associations')
->orderBy('name', 'asc')
->get();https://stackoverflow.com/questions/54539463
复制相似问题