Exemplo n.º 1
0
 /**
  * Gets the translations for the resources and their associated ids.
  *
  * @param array $resources
  * @return Collection
  */
 public function getTranslations(array $resources)
 {
     $resourceCriteria = new ResourceCriteria();
     foreach ($resources as $resource => $ids) {
         $resourceCriteria->addResource($resource);
         foreach ($ids as $id) {
             $resourceCriteria->addId($resource, $id);
         }
     }
     return $this->translationRepository->getByResourceCriteria($resourceCriteria);
 }
 /**
  * When searching for translations to be applied to an entity, or a collection of entities,
  * we want to do so in the most manner possible. In this way, any repository you have
  * that searches for translations, should do so based on the ResourceCriteria object passed.
  *
  * @param ResourceCriteria $criteria
  * @return mixed
  */
 public function getByResourceCriteria(ResourceCriteria $criteria)
 {
     $resources = $criteria->getResources();
     $query = $this->getQuery();
     foreach ($resources as $resource) {
         $query->orWhere(function ($query) use($criteria, $resource) {
             $query->whereResource($resource);
             $query->whereIn('foreignId', $criteria->getIds($resource));
         });
     }
     return $query->get();
 }
 public function testResourceCriteriaSearch()
 {
     $resourceCriteria = new ResourceCriteria();
     $resourceCriteria->addResource('Content');
     $resourceCriteria->addId('Content', 1);
     $translations = $this->translationRepository->getByResourceCriteria($resourceCriteria);
     $this->assertCount(2, $translations);
     $this->assertEquals('This is how you spell colour.', $translations[0]->value);
     $this->assertEquals('en_GB', $translations[0]->language);
     $this->assertEquals('This is how you spell color.', $translations[1]->value);
     $this->assertEquals('en_US', $translations[1]->language);
 }
 /**
  * When searching for translations to be applied to an entity, or a collection of entities,
  * we want to do so in the most manner possible. In this way, any repository you have
  * that searches for translations, should do so based on the ResourceCriteria object passed.
  *
  * @param ResourceCriteria $criteria
  * @return mixed
  */
 public function getByResourceCriteria(ResourceCriteria $criteria)
 {
     // Resources provided may be empty, in which case - no translations should be searched for
     if ($criteria->invalid()) {
         return new Collection();
     }
     $resources = $criteria->getResources();
     $query = $this->model->select(['*']);
     foreach ($resources as $resource) {
         $query->orWhere(function ($query) use($criteria, $resource) {
             $query->whereResource($resource);
             $query->whereIn('foreign_id', $criteria->getIds($resource));
         });
     }
     return $query->get();
 }