类型错误:传递给的appbundle \实体\ TERMIN参数1 :: setObjektnummer()必须的appbundle \实体\ OBJEKT,给定的整数,称为在/ var / WWW / eWorker / SRC /的appbundle /控制器/ ImportController的一个实例第72行的.php
我无法设置主键。它不是自动编号。当我打印$ json [' Header'] [' Objektnummer']时,它会显示正确的结果。
该行将正确添加。只有" objektnummer"将是0而不是json数组中的值。我的错误在哪里?
$em = $this->getDoctrine()->getManager();
$str = file_get_contents($filename);
$json = json_decode($str, true);
$repository = $this->getDoctrine()->getRepository("AppBundle:User");
$mitarbeiter = $repository->findOneBy(
array('username' => $json['Header']['Mitarbeiter'])
);
$objekt = $this->getDoctrine()
->getRepository("AppBundle:Objekt")
->find($json['Header']['Objektnummer']);
if (!$objekt) {
$objekt = new Objekt();
$objekt->setObjektnummer(intval($json['Header']['Objektnummer']));
$objekt->setAnrufer($json['Objekt']['Anrufer']);
$objekt->setFilialemail($json['Objekt']['Filialemail']);
$objekt->setFilialname($json['Objekt']['Filialname']);
$objekt->setObjektanleger($json['Objekt']['Objektanleger']);
$newSchadentag = explode(".", $json['Objekt']['Schadentag']);
$objekt->setSchadentag(new \DateTime($newSchadentag[2] . "-" . $newSchadentag[1] . "-" . $newSchadentag[0]));
$objekt->setSchadenursache($json['Objekt']['Schadensursache']);
$objekt->setSchadenbehoben(intval($json['Objekt']['Schaden_Behoben']));
$em->persist($objekt);
$em->flush();
}
$termin = new Termin();
$termin->setObjektnummer($objekt->getObjektnummer());
$termin->setIduser( $mitarbeiter->getId() );
$termin->setTerminart($json['Objekt']['Terminart']);
$termin->setDatumbeginn(new \DateTime($this->switchDatum( $json['Objekt']['Termin'] . " " . $json['Objekt']['Uhrzeit'])));
$termin->setDatumende(new \DateTime($this->switchDatum( $json['Objekt']['Termin'] . " " . $json['Objekt']['UhrzeitBis'])));
$termin->setWeitererhinweis($json['Objekt']['WeitererHinweis']);
$em->persist($termin);
$em->flush();
这是ORM
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="AppBundle\Entity\Objekt" table="objekt">
<id name="objektnummer" type="integer" column="objektnummer">
<generator strategy="IDENTITY"/>
</id>
<field name="filialname" type="string" column="filialname" length="45" nullable="false">
<options>
<option name="fixed"/>
</options>
</field>
<field name="filialemail" type="string" column="filialemail" length="45" nullable="false">
<options>
<option name="fixed"/>
</options>
</field>
<field name="objektanleger" type="string" column="objektanleger" length="45" nullable="false">
<options>
<option name="fixed"/>
</options>
</field>
<field name="schadentag" type="datetime" column="schadentag" nullable="false"/>
<field name="schadenursache" type="text" column="schadenursache" nullable="true">
<options>
<option name="fixed"/>
</options>
</field>
<field name="schadenbehoben" type="integer" column="schadenbehoben" nullable="true">
<options>
<option name="unsigned"/>
</options>
</field>
<field name="anrufer" type="string" column="anrufer" length="45" nullable="true">
<options>
<option name="fixed"/>
</options>
</field>
</entity>
</doctrine-mapping>
这里我有实体类:
namespace AppBundle\Entity;
/**
* Objekt
*/
class Objekt
{
/**
* @var string
*/
private $filialname;
/**
* @var string
*/
private $filialemail;
/**
* @var string
*/
private $objektanleger;
/**
* @var \DateTime
*/
private $schadentag;
/**
* @var string
*/
private $schadenursache;
/**
* @var integer
*/
private $schadenbehoben;
/**
* @var string
*/
private $anrufer;
/**
* @var integer
*/
private $objektnummer;
/**
* Set filialname
*
* @param string $filialname
*
* @return Objekt
*/
public function setFilialname($filialname)
{
$this->filialname = $filialname;
return $this;
}
/**
* Get filialname
*
* @return string
*/
public function getFilialname()
{
return $this->filialname;
}
/**
* Set filialemail
*
* @param string $filialemail
*
* @return Objekt
*/
public function setFilialemail($filialemail)
{
$this->filialemail = $filialemail;
return $this;
}
/**
* Get filialemail
*
* @return string
*/
public function getFilialemail()
{
return $this->filialemail;
}
/**
* Set objektanleger
*
* @param string $objektanleger
*
* @return Objekt
*/
public function setObjektanleger($objektanleger)
{
$this->objektanleger = $objektanleger;
return $this;
}
/**
* Get objektanleger
*
* @return string
*/
public function getObjektanleger()
{
return $this->objektanleger;
}
/**
* Set schadentag
*
* @param \DateTime $schadentag
*
* @return Objekt
*/
public function setSchadentag($schadentag)
{
$this->schadentag = $schadentag;
return $this;
}
/**
* Get schadentag
*
* @return \DateTime
*/
public function getSchadentag()
{
return $this->schadentag;
}
/**
* Set schadenursache
*
* @param string $schadenursache
*
* @return Objekt
*/
public function setSchadenursache($schadenursache)
{
$this->schadenursache = $schadenursache;
return $this;
}
/**
* Get schadenursache
*
* @return string
*/
public function getSchadenursache()
{
return $this->schadenursache;
}
/**
* Set schadenbehoben
*
* @param integer $schadenbehoben
*
* @return Objekt
*/
public function setSchadenbehoben($schadenbehoben)
{
$this->schadenbehoben = $schadenbehoben;
return $this;
}
/**
* Get schadenbehoben
*
* @return integer
*/
public function getSchadenbehoben()
{
return $this->schadenbehoben;
}
/**
* Set anrufer
*
* @param string $anrufer
*
* @return Objekt
*/
public function setAnrufer($anrufer)
{
$this->anrufer = $anrufer;
return $this;
}
/**
* Get anrufer
*
* @return string
*/
public function getAnrufer()
{
return $this->anrufer;
}
/**
* Get objektnummer
*
* @return integer
*/
public function getObjektnummer()
{
return $this->objektnummer;
}
/**
* Set objektnummer
*
* @param int $objektnummer
*
* @return Objekt
*/
public function setObjektnummer($objektnummer)
{
$this->objektnummer = $objektnummer;
return $this;
}
}