Schönen guten Tag.
Ich wollte mich mal mit Doctrine versuchen, aber krieg es einfach nicht hin.
Hab es in der Bootstrap registriert und auch die DoctrineFactory geschrieben was auch laufen sollte.
Aber bei den Entities bekomm ich es einfach nicht hin.
Bekomme immer folgende Fehlermeldung:
Habe einfach nur eine simple Tabelle "candidate" mit den spalten "id" und "token".
Vielleicht hat ja jemand eine Idee..
Class Candidate:
CandidateRepository:
DefaultAction:
Viele Grüße,
Herkaen
Ich wollte mich mal mit Doctrine versuchen, aber krieg es einfach nicht hin.
Hab es in der Bootstrap registriert und auch die DoctrineFactory geschrieben was auch laufen sollte.
Aber bei den Entities bekomm ich es einfach nicht hin.
Bekomme immer folgende Fehlermeldung:
Doctrine\ORM\ORMInvalidArgumentException: EntityManager#persist() expects parameter 1 to be an entity object, array given.
Vielleicht hat ja jemand eine Idee..
Class Candidate:
PHP-Code:
use Doctrine\ORM\Mapping as ORM;
/**
* Accesses
*
* @ORM\Table(name="candidate")
* @ORM\Entity
* @ORM\Entity(repositoryClass="AnonymityCenter\CandidateRepository")
*/
class Candidate
{
/**
* @var string
*
* @ORM\Column(name="id", type="string", nullable=false)
* @ORM\Id
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="token", type="string", nullable=false)
*/
private $token;
public static function create(string $id, string $token): self
{
$me = new self();
$me->id = $id;
$me->token = $token;
return $me;
}
public function getId(): string
{
return $this->id;
}
public function getToken(): string
{
return $this->token;
}
}
CandidateRepository:
PHP-Code:
use Doctrine\ORM\EntityRepository;
class CandidateRepository extends EntityRepository
{
/**
* @param Candidate[] $candidates
* @throws \Doctrine\ORM\OptimisticLockException
*/
public function saveCandidates(array $candidates)
{
foreach ($candidates as $candidate) {
$this->_em->persist($candidate);
}
$this->_em->flush();
}
public function getCandidates(string $identifier): Candidate
{
$token = $this->find($identifier);
if (null === $token) {
throw new Exception('Token not found: ' . $identifier);
}
/** @var Candidate $candidate */
return $candidate;
}
}
DefaultAction:
PHP-Code:
$json = file_get_contents('../test.json');
$jsonDecode = json_decode($json, true);
$this->candidateRepository->saveCandidates($jsonDecode['candidates']);
Viele Grüße,
Herkaen
Kommentar