我有一个错误,当我尝试创建一个记录时,它给了我这个错误,错误:调用成员函数setPayrollperiodid()在字符串中的C: \ wamp64 \ WWW \ AgripayrollsystemV2 \ AgriPayrollSystem \ SRC \ COM \ TWCL \ agripayrollBundle \控制器\ PayrollperiodController.php。这一行:** $ pWeek-> setPayrollperiodid($实体); **错误:调用成员函数setPayrollperiodid()on字符串
实体
<?php
namespace com\twcl\agripayrollBundle\Entity;
//use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Payrollperiod
*
*/
class Payrollperiod
{
/**
* @var integer
*
*/
private $payrollperiodid;
/**
* @var \DateTime
*
* @Assert\DateTime()
*/
private $startdate;
/**
* @var \DateTime
*
*
* @Assert\Type("DateTime")
* message="The end date must be after the start date")
*/
private $enddate;
/**
* @var integer
*
*
*/
private $state;
public function getPayrollperiodid() {
return $this->payrollperiodid;
}
public function getStartdate() {
return $this->startdate;
}
public function getEnddate() {
return $this->enddate;
}
public function getState() {
return $this->state;
}
public function setPayrollperiodid($payrollperiodid) {
$this->payrollperiodid = $payrollperiodid;
}
public function setStartdate(\DateTime $startdate) {
$this->startdate = $startdate;
}
public function setEnddate(\DateTime $enddate) {
$this->enddate = $enddate;
}
public function setState($state) {
$this->state = $state;
}
/**
* Render a payrollPeriodID as a string.
*
* @return string
*/
public function __toString()
{
return (string) $this->getPayrollperiodid();
}
}
控制器
public function createAction(Request $request)
{
$entity = new Payrollperiod();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$payrollperiod = $em->getRepository('comtwclagripayrollBundle:Payrollperiod')->findOneBy(['startdate'=>$form->get('startdate')->getData(), 'enddate'=>$form->get('enddate')->getData()]);
$payrollweek = $em->getRepository('comtwclagripayrollBundle:Payrollweek')->findBystartdateAndenddate($form->get('startdate')->getData(), $form->get('enddate')->getData());
//If entity exists
if ($payrollperiod){
$this->addFlash('error', 'Payroll Period exist.');
return $this->redirect($this->generateUrl('payrollperiod'));
}
//If PayrollWeek matches the Payrollperiod entered
elseif ($payrollweek){
foreach($payrollweek as $pWeek) {
**$pWeek->setPayrollperiodid($entity);**
//$em->persist($pWeek);
}
$em->persist($entity);
$em->flush();
$this->addFlash('error', 'Payroll Period was added.');
$this->addFlash('error', 'Payroll week was updated.');
return $this->redirect($this->generateUrl('payrollperiod'));
//return $this->redirect($this->generateUrl('payrollperiod_show', array('payrollperiodid' => $entity->getpayrollperiodid())));
}
else{
$this->addFlash('error', 'Payroll Period does not match a payroll week.');
return $this->redirect($this->generateUrl('payrollperiod'));
}
}
//return $this->render('comtwclagripayrollBundle::new.html.twig',array('form' => $form->createView()));
return array(
'entity' => $entity,
'form' => $form->createView(),
);
}
定制库
return $this
->createQueryBuilder('payrollweek')
->select('COUNT(pw)')
->from ('comtwclagripayrollBundle:Payrollweek','pw')
->where ('pw.startdate = :startdate and pw.enddate = :enddate')
->setParameter('startdate', $startdate)
->setParameter('enddate', $enddate)
->getQuery()
->getOneorNullResult();
}
尝试打印的$ payrollweek请 –
结果内容:数组(大小= 1)1 =>字符串 '0'(长度= 1) – Sue
(''COUNT(pw)') - > from('comtwclagripayrollBundle:Payrollweek','pw') - > where('pw.startdate =:startdate and pw.enddate =:enddate') - > setParameter('startdate',$ startdate) - > s etParameter('enddate',$ enddate) - > getQuery() - > getOneorNullResult(); }此查询将计算匹配r =输入的开始和结束日期的行数。不知道这是否是问题 – Sue