Esempio n. 1
0
 /**
  * @param Film|Collection $item
  * @return array
  */
 public function transform($item)
 {
     if ($item instanceof Film) {
         return $item->toArray();
     }
     return parent::transform($item);
 }
 /**
  * @param $fields
  * @param Carbon $since
  * @param Carbon $until
  * @param int $limit
  * @return \Illuminate\Pagination\Paginator
  */
 public function findBy($fields, Carbon $since, Carbon $until, $limit = self::EXHIBITIONS_FOR_PAGE)
 {
     if (empty($fields)) {
         return Collection::make([]);
     }
     $builder = Film::getQuery();
     $dateInterval = [$since->format(MYSQL_DATE_TIME_FORMAT), $until->format(MYSQL_DATE_TIME_FORMAT)];
     foreach ($fields as $name => $value) {
         $builder->where($name, 'like', '%' . $value . '%');
     }
     $results = $builder->get(['id']);
     if (empty($results)) {
         return \Paginator::make([], 0, 1);
     }
     $filmsIds = Collection::make($results)->map(function (\stdClass $dummyObject) {
         return $dummyObject->id;
     })->toArray();
     $resourcesBuilder = Exhibition::whereHas('exhibitionFilm', function ($builder) use($filmsIds) {
         $builder->whereHas('film', function (Builder $builder) use($filmsIds) {
             $builder->whereIn('films.id', $filmsIds);
         });
     })->whereHas('schedules', function (Builder $query) use($dateInterval) {
         $query->whereBetween('entry', $dateInterval);
     });
     $resources = $this->addRelationships($resourcesBuilder, $limit);
     return $resources;
 }
Esempio n. 3
0
 /**
  * @param $slug
  * @return \Filmoteca\Exhibition\Type\Film
  */
 public function findOneBySlug($slug)
 {
     $film = Film::where('slug', $slug)->limit(1)->firstOrFail();
     return $film;
 }