Пример #1
0
 /**
  * @inheritdoc
  */
 public function getRandomIdsNotInPivot(array $entities, array $idEntities, array $ids, $count)
 {
     // the table to retrieve ids from
     $table = last($entities);
     $pivotTable = $this->tableHelper->getTable($entities);
     $pivotColumn = $this->tableHelper->getLastEntityAsIdColumnName($entities);
     $columnNames = $this->tableHelper->getIdColumnNames($entities, $idEntities);
     if (count($entities) === count($ids)) {
         array_pop($ids);
     }
     $pivotWhereJoinColumns = array_combine($columnNames, $ids);
     return $this->db->getRandomIdsFromTableWhereNotInPivot($table, $pivotTable, $pivotColumn, $count, $pivotWhereJoinColumns);
 }
Пример #2
0
 function it_gets_random_ids_for_an_entity_that_are_not_in_a_pivot(TableFetcher $tableFetcher, TableHelper $tableHelper)
 {
     $entities = ['sites', 'products', 'images'];
     $idEntities = ['sites', 'products'];
     $table = 'images';
     $pivotColumn = 'image_id';
     $pivot = 'image_product_site';
     $ids = [1, 2];
     $imageId = [5];
     $columns = ['site_id', 'product_id'];
     $count = 2;
     $tableHelper->getLastEntityAsIdColumnName($entities)->shouldBeCalled()->willReturn($pivotColumn);
     $tableHelper->getTable($entities)->shouldBeCalled()->willReturn($pivot);
     $tableHelper->getIdColumnNames($entities, $idEntities)->shouldBeCalled()->willReturn($columns);
     $tableFetcher->getRandomIdsFromTableWhereNotInPivot($table, $pivot, $pivotColumn, $count, array_combine($columns, $ids))->shouldBeCalled()->willReturn($imageId);
     $this->getRandomIdsNotInPivot($entities, $idEntities, $ids, $count);
 }