/** * Here we check which joins are made and that they are optimal. * * `Article::where('readers/id')->...` should include only middle table * `Article::where('readers/firstName')->...` should include both middle and * linked tables. * */ public function no_testConditionOnManyMany() { $b = new WhereBuilder(); $b->root('Article'); $b->where('readers/id', 12); $b->select(['*']); $b->build(); // "_m" stands for "middle". $middle = (new JoinClause('articles_USERS', 'readers_m'))->on('_', 'id', 'readers_m', 'article_id'); $lm = (new JoinClause('USERS', 'readers'))->on('readers_m', 'user_id', 'readers', 'id'); $this->assertEquals($middle, $b->getJoinClause('readers_m')); $this->assertFalse(@$b->getJoinClause('readers')); $b = new WhereBuilder(); $b->root('Article'); $b->where('readers/firstName', 'John'); $b->select(['*']); $b->build(); $this->assertEquals($middle, $b->getJoinClause('readers_m')); $this->assertEquals($lm, $b->getJoinClause('readers')); }