简体   繁体   中英

Missing value for primary key id on

I have a little problem.

I am getting this error

Missing value for primary key id on AppBundle\\Entity\\User

This is my realtion with database 在此处输入图片说明

And This is my entities

 /**
 * @ORM\Entity
 * @ORM\Table(name="caller_machine")
 */
class CallerMachine {

/**
 * @ORM\GeneratedValue(strategy="AUTO")
 * @ORM\Id
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @ORM\Column(type="integer", nullable=true)
 */
private $buttonNumber;

/**
 * @ORM\Column(type="text", nullable=false)
 */
private $linkToMusic;

/**
 * @ORM\Column(type="text", nullable=true)
 */
private $telephoneNumber;

/**
 * @ORM\Column(type="text", nullable=true)
 */
private $acceptRegulations;

/**
 * @ORM\ManyToOne(
 *      targetEntity = "AppBundle\Entity\CallerMachineVoice"
 * )
 * 
 * @ORM\JoinColumn(
 *      name = "number_id",
 *      referencedColumnName = "id",
 *      nullable = false
 * )
 */
private $numberMachine;

.......

 /**
 * @ORM\Entity
 * @ORM\Table(name="user_name")
 */
class User {
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length = 20, unique = true)
     */
    private $username;

...........

/**
 * @ORM\Entity
 * @ORM\Table(name="call_back_machine")
 */
class CallBackMachine {

    /**
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Id
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="integer", nullable=true)
     */
    private $buttonNumber;

    /**
     * @ORM\Column(type="text", nullable=false)
     */
    private $linkToMusic;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $telephoneNumber;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $acceptRegulations;


    /**
     * @ORM\ManyToOne(
     *      targetEntity = "AppBundle\Entity\CallBackMachineVoice"
     * )
     * 
     * @ORM\JoinColumn(
     *      name = "number_id",
     *      referencedColumnName = "id",
     *      nullable = false
     * )
     */
    private $numberMachine;

.......

/**
 * @ORM\Entity
 * @ORM\Table(name="call_back_machine_voice")
 */
class CallBackMachineVoice {
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(
     *      targetEntity = "AppBundle\Entity\User"
     * )
     * 
     * @ORM\JoinColumn(
     *      name = "users_id",
     *      referencedColumnName = "username",
     *      nullable = false
     * )
     */
    private $user;

    /**
     * @ORM\Column(type="string")
     */
    private $linkToMusic;

...............

/**
 * @ORM\Entity
 * @ORM\Table(name="caller_machine_voice")
 */
class CallerMachineVoice {
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\OneToOne(
     *      targetEntity = "AppBundle\Entity\User"
     * )
     * 
     * @ORM\JoinColumn(
     *      name = "users_id",
     *      referencedColumnName = "username",
     *      nullable = false
     * )
     */
    private $user;

    /**
     * @ORM\Column(type="string")
     */
    private $linkToMusic;

When I create form

public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
                ->add('numbermachine', EntityType::class, [
                    'class' => 'AppBundle\Entity\CallerMachineVoice',
                    'choice_label' => 'user'
                ])
                ->add('buttonnumber', IntegerType::class, [
                    'label' => 'Podaj numer przycisku'
                ])
                ->add('linktomusic', TextType::class,[
                    'label' => 'Podaj link do muzyki'
                ])
                ->add('telephonenumber', IntegerType::class, [
                    'label' => 'Podaj numer przycisku'
                ])
                ->add('acceptregulations', IntegerType::class, [
                    'label' => 'Podaj numer przycisku'
                ])
                ->add('submit', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, array(
                    'label' => 'Zapisz'
                ));
    }

I have a problem, but When I remove line ,,numberMachine'' I see my form. Where is my problem ? Help me :)

ACTUALISATION

PRobably my problem is entity CallerMachineVoice

Try this:

On CallerMachineVoice:

/**
 * @ORM\ManyToOne("User") 
 * @ORM\JoinColumn(
 *      name = "user_id",
 *      referencedColumnName = "id",
 *      nullable = false
 * )
 */
private $user;

Then define on User Entity __toString magic method:

/**
 * @return string
 */
public function __toString()
{
    return $this->getUsername();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM