"UserBundleEntityUser" 类型的预期参数,"NULL"给定



我想编辑我的氏族,当我将CO领导者设置为null时,出现了错误,但其余的则可以。

"类型" UserBundle Entity user"," Null"给定的预期参数

我希望有人可以帮助我。

clan.php

/**
 * @var User
 * @ORMGeneratedValue(strategy="NONE")
 * @ORMOneToOne(targetEntity="UserBundleEntityUser")
 * @ORMJoinColumns({
 *   @ORMJoinColumn(name="coLeader", referencedColumnName="id", onDelete="SET NULL")
 * })
 *
 *
 */
private $coleader = null;

//@samdufel的解决方案(在$ coleader附加" = null"之后)

/**
 * Set coleader
 *
 * @param User $coleader
 * @return Clan
 */
public function setColeader(User $coleader = null) // <--
{
    $this->coleader = $coleader;
    return $this;
}

clantype.php

->add('coleader', null, array(
      'label' => 'clan.coleader',
      'required' => false,
      'empty_data' => null,
      'placeholder' => 'form.nobody',
));

clancontroller.php

 /**
 * Displays a form to edit an existing Clan entity.
 *
 * @Route("/edit/{id}", name="clan_edit")
 * @Method({"GET", "POST"})
 */
public function editAction(Request $request, Clan $clan)
{
    $current_leader = $clan->getLeader();
    $current_coleader = $clan->getColeader();
    $editForm = $this->createForm('ClanBundleFormClanType', $clan);
    $editForm->handleRequest($request);
    if ($editForm->isSubmitted() && $editForm->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $user = $em->getRepository('UserBundle:User');
        $current_leader =  $user->find($current_leader);
        $current_coleader = $current_coleader != '' ? $user->find($current_coleader) : '';
        $leader = $editForm['leader']->getData();
        $coleader = $editForm['coleader']->getData();
        if($leader != $current_leader ){
            $current_leader->removeRole('ROLE_LEADER');
            $user_leader = $em->getRepository('UserBundle:User')->find($leader);
            $user_leader->addRole('ROLE_LEADER');
            $user_leader->setClanId($clan);
        }
        if(!empty($coleader) || $coleader != $current_coleader){
            $current_coleader ? $current_coleader->removeRole('ROLE_COLEADER') : '';
            $user_co = $em->getRepository('UserBundle:User')->find($coleader);
            $user_co->addRole('ROLE_COLEADER');
            $user_co->setClanId($clan);
        }
        if(empty($coleader)){
            $current_coleader ? $current_coleader->removeRole('ROLE_COLEADER') : '';
        }
        $em->persist($clan);
        $em->flush();
        return $this->redirectToRoute('clan_edit', array('id' => $clan->getId()));
    }
    return $this->render(
        'ClanBundle:clan:form.html.twig',
        array(
            'clan' => $clan,
            'form' => $editForm->createView(),
            'status' => 'edit'
        )
    );
}

user.php默认来自fosuserbundle,除了我的user.php中的3个实体

//...
class User extends BaseUser
{
/**
 * @ORMId
 * @ORMColumn(type="integer")
 * @ORMGeneratedValue(strategy="AUTO")
 * @ORMOneToOne(targetEntity="Clan", mappedBy="leader")
 * @ORMOneToOne(targetEntity="Clan", mappedBy="coLeader")
 */
protected $id;
public function __construct()
{
    parent::__construct();
    $this->roles = array('ROLE_USER');
    $this->createdAt = new DateTime();
}
/**
 * @var DateTime
 *
 * @ORMColumn(name="created_at", type="datetime")
 */
protected $createdAt;
/**
 * @var integer
 *
 * @ORMManyToOne(targetEntity="ClanBundleEntityClan")
 * @ORMJoinColumn(referencedColumnName="id", onDelete="SET NULL")
 */
protected $clanId;
//...

有现代方法:https://symfonycasts.com/screencast/php7/nullable-types

您可以使用'?"参数类型之前:

public function setFunFact(?string $funFact): void
{
}

最新更新