萨克鲁姆 / 萨克鲁姆模型导入器
该软件包已被废弃,不再维护。未建议替代软件包。
萨克鲁姆模型导入器
2.1.0
2016-07-17 10:56 UTC
Requires
- php: ~5.5|~7.0
- psr/log: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.0
- symfony/console: ~2.7|~3.0
This package is not auto-updated.
Last update: 2020-09-22 19:09:15 UTC
README
描述
一个简单易用的模型导入器,作为用户,您无需检查是否需要创建或更新,只需循环...
要求
- php: ~5.5|~7.0
- psr/log: ~1.0
安装
通过 Composer 以 saxulum/saxulum-model-importer 的形式。
使用
使用 Doctrine 2 ORM 的示例实现
$em = ...
$importer = new Importer(new Reader($em), new Writer($em));
$importer->import();
class Reader implements ReaderInterface
{
/**
* @var EntityManager
*/
protected $em;
/**
* @param EntityManager $em
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}
/**
* @ReaderModelInterface[]|array
*/
public function getReaderModels($offset, $limit)
{
$qb = $this->em->getRepository(ReaderEntity::class)->createQueryBuilder('r');
$qb->setFirstResult($offset);
$qb->setMaxResults($limit);
return $qb->getQuery()->getResult();
}
public function clearReaderModels()
{
$this->em->clear(ReaderEntity::class);
}
}
class ReaderEntity implements ReaderModelInterface
{
/**
* @var int
*/
protected $id;
/**
* @var string
*/
protected $name;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param string $name
* @return $this
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @return int
*/
public function getImportIdentifier()
{
return $this->getId();
}
}
class Writer implements WriterInterface
{
/**
* @var EntityManager
*/
protected $em;
/**
* @param EntityManager $em
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}
/**
* @param ReaderModelInterface $readerModel
*
* @return WriterModelInterface|null
*/
public function findWriterModel(ReaderModelInterface $readerModel)
{
return $this->em->getRepository(WriterEntity::class)
->findOneBy(['importIdentifier' => $readerModel->getImportIdentifier()]);
}
/**
* @param ReaderModelInterface $readerModel
*
* @return WriterModelInterface
*
* @throws NotImportableException
*/
public function createWriterModel(ReaderModelInterface $readerModel)
{
$writerModel = new WriterEntity();
$writerModel->setName($readerModel->getName());
return $writerModel;
}
/**
* @param WriterModelInterface $writerModel
* @param ReaderModelInterface $readerModel
*
* @throws NotImportableException
*/
public function updateWriterModel(WriterModelInterface $writerModel, ReaderModelInterface $readerModel)
{
$writerModel->setName($readerModel->getName());
}
/**
* @param WriterModelInterface $writerModel
*
* @throws NotImportableException
*/
public function persistWriterModel(WriterModelInterface $writerModel)
{
$this->em->persist($writerModel);
}
public function flushWriterModels(array $writeModels)
{
$this->em->flush($writeModels);
}
public function clearWriterModels()
{
$this->em->clear(WriterEntity::class);
}
/**
* @param \DateTime $lastImportDate
*/
public function removeWriterModels(\DateTime $lastImportDate)
{
$qb = $this->em->createQueryBuilder();
$qb->delete(WriterEntity::class, 'w');
$qb->where(
$qb->expr()->orX(
$qb->expr()->isNull('w.lastImportDate'),
$qb->expr()->neq('w.lastImportDate', ':lastImportDate')
)
);
$qb->setParameter('lastImportDate', $lastImportDate);
$qb->getQuery()->execute();
}
}
class WriterEntity implements WriterModelInterface
{
/**
* @var int
*/
protected $id;
/**
* @var string
*/
protected $name;
/**
* @var int
*/
protected $importIdentifier;
/**
* @var \DateTime
*/
protected $lastImportDate;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param string $name
* @return $this
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param int $importIdentifier
*/
public function setImportIdentifier($importIdentifier)
{
$this->importIdentifier = $importIdentifier;
}
/**
* @return int
*/
public function getImportIdentifier()
{
return $this->importIdentifier;
}
/**
* @param \DateTime $lastImportDate
*/
public function setLastImportDate(\DateTime $lastImportDate)
{
$this->lastImportDate = $lastImportDate;
}
/**
* @return \DateTime
*/
public function getLastImportDate()
{
return $this->lastImportDate;
}
}
版权
多米尼克·佐格 dominik.zogg@gmail.com