Sql ON子句Laravel ORM中的子查询

Sql ON子句Laravel ORM中的子查询,sql,laravel,orm,eloquent,laravel-5.1,Sql,Laravel,Orm,Eloquent,Laravel 5.1,如何在Laravel ORM中创建此查询 SELECT b1.* FROM `buildings` b1 INNER JOIN `buildings` b2 ON b2.`id` IN (SELECT `id` FROM `ingame_buildings`) WHERE b1.`level` > b2.`level` 我尝试在->加入中执行以下操作: 但它不起作用。这里是一个查询,用于获取建筑物中所有标高大于ingame_建筑物中现有建筑物标高的记录 你的质询对我来说毫无意义。您实际上

如何在Laravel ORM中创建此查询

SELECT b1.* FROM `buildings` b1 INNER JOIN `buildings` b2 ON b2.`id` IN (SELECT `id` FROM `ingame_buildings`) WHERE b1.`level` > b2.`level`
我尝试在->加入中执行以下操作:


但它不起作用。

这里是一个查询,用于获取建筑物中所有标高大于ingame_建筑物中现有建筑物标高的记录


你的质询对我来说毫无意义。您实际上是在尝试从建筑物中选择*,其中id在从ingame_建筑物中选择id,并且在数据集中,您想要比较级别列?@yangqi-我有两个collumns。第一个是游戏中所有可用建筑模板的建筑,第二个是我放数据的ingame_建筑,关于当前城市中的建筑。我想找到所有可用的升级-我在buildings表中有这些数据,因为我有id、building_id和level字段,其中building_id和level是唯一的。我只能在ingame_buildings is building_id中输入参考buildings.id字段的内容。感谢您的澄清,据我所知,在buildings和ingame_buildings表中都有building_id,但它们代表不同的含义?简单地说,我有building:市政厅。这座建筑有三层。所以我在建筑物中有下面3个字段:id,building_id,level:12,1,1,34,1,2,56,1,3-id字段是C的主键。玩家建造建筑的地方,简单来说是市政厅1层,在ingame_建筑有:id,building_id,owner_id:1,12,1,但当基地有3层时,我有1,56,1:好的,我明白了。在两个不同的表中构建_id确实令人困惑。建筑物中的一个标识唯一的建筑物,但ingame_建筑物中的一个是外键,用于标识建筑物中唯一的行。看到下面的答案,我稍后会添加雄辩的查询。在条件ingame_level.building_id=buildings.id中,您应该使用buildings.building_id进行正确的工作,但非常感谢mutch bro!:
function(){
    return implode(',',IngameBuilding::get());
}
SELECT * FROM buildings
JOIN (
      SELECT a.building_id, b.level 
      FROM ingame_buildings as a
      JOIN buildings as b ON a.building_id=b.id
     ) 
AS ingame_level ON ingame_level.building_id=buildings.id
WHERE buildings.level > ingame_level.level