/** * {@inheritdoc} */ public function project($value) { /** @var \Cubiche\Core\Projection\ProjectionWrapperInterface $leftProjection */ foreach ($this->left()->project($value) as $leftProjection) { /** @var \Cubiche\Core\Projection\ProjectionWrapperInterface $rightProjection */ foreach ($this->right()->project($value) as $rightProjection) { if ($this->checkJoin($leftProjection, $rightProjection)) { (yield $this->doJoin(ProjectionBuilder::fromWrapper($leftProjection), ProjectionBuilder::fromWrapper($rightProjection))); } } } }