是否可以连接两个单独的查询调用?更具体地说,是不是可以加入 $servers
以及 $applications
?
$servers = Server::select('servers.*', 'statuses.status as status_name')
->leftJoin('server_statuses', function($join) {
$join->on('server_statuses.server_id', '=', 'servers.id')
->where('server_statuses.id', function($query) {
$query->select('id')
->from('server_statuses')
->whereColumn('server_id', 'servers.id')
->latest()
->limit(1);
});
})
->leftJoin('statuses', 'statuses.id', '=', 'server_statuses.status_id')
->where('servers.isPublic', '=', 1)
->orderBy('servers.id', 'desc')
->get();
$applications = Apps::join('app_servers', 'apps.id', '=', 'app_servers.app_id')
->get();
这个 $servers
查询正在执行此sql语句:
select `servers`.*, `statuses`.`status` as `status_name` from `servers` left join `server_statuses` on `server_statuses`.`server_id` = `servers`.`id` and `server_statuses`.`id` = (select `id` from `server_statuses` where `server_id` = `servers`.`id` order by `created_at` desc limit 1) left join `statuses` on `statuses`.`id` = `server_statuses`.`status_id` where `servers`.`isPublic` = '1' order by `servers`.`id` desc
我在努力避免再次提出复杂的问题。我试着运行一个联合,但得到了一个绑定错误,我也试着做如下的事情,但没有给我预期的结果。
foreach($servers as $server){
$applications->add($server);
}
$test = $applications->toarray();
dd($test);
如果可能的话,有人知道我该怎么做吗?还是我要对所有5个表进行查询?
(如果需要,将发布迁移)
编辑:
为了清楚起见,我正试图得到 status
服务器的列 $servers
在应用程序联接表中查询。
1条答案
按热度按时间gzjq41n41#
用这个查询解决了。