Ejemplo n.º 1
0
 public function test_adding_a_relationship_to_resource()
 {
     $rootResource = new Resource('my__0', 'myCoolResource', 'my_cool_table', 'my_cool_id');
     $referencedResource = new Resource('my__1', 'myOtherResource', 'my_other_table', 'my_cool_id');
     $relationship = new Relationship($rootResource, $referencedResource, 'many-to-one', 'my_other_table.cool_id = my_cool_table.id');
     $rootResource->addRelationship($relationship);
     $this->assertTrue($rootResource->hasRelationships());
     $this->assertEquals(1, $rootResource->countRelationships());
 }
Ejemplo n.º 2
0
 private function buildFromJoinsClause(Resource $resource)
 {
     $joinsClause = '';
     if ($resource->hasRelationships()) {
         $relationships = $resource->getRelationships();
         /** @var \FlyRRM\Mapping\Relationship $rel */
         foreach ($relationships as $rel) {
             if ($rel->getType() === Relationship::TYPE_MANY_TO_ONE) {
                 $referencedResource = $rel->getReferencedResource();
                 $mainResource = $rel->getMainResource();
                 $joinCondition = $mainResource->getResourceUniqueIdentifier() . '.' . $rel->getJoinColumn() . ' = ' . $referencedResource->getResourceUniqueIdentifier() . '.' . $referencedResource->getPrimaryKey();
                 $joinsClause .= ' left outer join ' . $referencedResource->getTable() . ' ' . $referencedResource->getResourceUniqueIdentifier() . ' on ' . $joinCondition . $this->buildFromJoinsClause($referencedResource);
             }
         }
     }
     return $joinsClause;
 }