Извлечение связанного объекта равно нулю в базе данных mutil с доктриной в symfony - PullRequest
0 голосов
/ 30 декабря 2018
config
    config.yml
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver: pdo_mysql
                host: '%database_host%'
                port: '%database_port%'
                dbname: '%database_name%'
                user: '%database_user%'
                password: '%database_password%'
                charset: UTF8

            customer:
                driver: pdo_mysql
                host: '%database_host%'
                port: '%database_port%'
                dbname: 'trade'
                user: '%database_user%'
                password: '%database_password%'
                charset: UTF8
    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    AppBundle:  ~
            customer:
                connection: customer
                mappings:
                    AppBundle:
                      dir: EntityTrade


AppBundle\Entity\acclogin
class acclogin
{
        /**
         * @ORM\Column(type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
        /**
         * @ORM\Column(type="string",unique=true)
         * @Assert\NotBlank(message="can't empty!",groups={"registration","login"})
         * @Assert\Length(min=6,max=64,minMessage="invalid 1",maxMessage="invalid 1",groups={"registration","login"})
         */
        private $name;
        /**
         * @ORM\OneToMany(targetEntity="AppBundle\EntityTrade\PayOrder",mappedBy="account")
         */
        private $payorders;

      public function getId()
        {
            return $this->id;
        }

        /**
         * Set name
         *
         * @param string $name
         *
         * @return account_login
         */
        public function setName($name)
        {
            $this->name = $name;

            return $this;
        }

        /**
         * Get name
         *
         * @return string
         */
        public function getName()
        {
            return $this->name;
        }
}

//AppBundle\EntityTrade\PayOrder
class PayOrder
{
        /**
         * @ORM\Column(type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
        /**
         * @ORM\Column(type="string")
         * @Assert\NotBlank(message="can't empty!",groups={"payAdd"})
         */
        private $pay_id;

        /**
         * @ORM\ManyToOne(targetEntity="AppBundle\Entity\acclogin",inversedBy="payorders")
         * @ORM\JoinColumn(name="pay_id",referencedColumnName="name")
         */
        private $account;
      .....
     ....
     ...........here is getter and setter
}

//AppBundle\EntityTrade\PayOrderRepository
class PayOrderRepository extends \Doctrine\ORM\EntityRepository {
        public function get( PayOrder $payOrder ) {
            $pay_no = $payOrder->getPayNo();
            return $this->findOneBy( [ 'pay_no' => $pay_no ] );
        }
}

он генерирует исключение, которое является "Отсутствует значение для идентификатора первичного ключа в AppBundle \ Entity \ acclogin" в этом коде "$ this-> findOneBy (['pay_no' => $ pay_no]);"почему? мне нужно добавить первичный ключ в "имя", любое тело может мне помочь? большое спасибо!если я изменю @ORM \ JoinColumn (name = "pay_id", referencedColumnName = "name") на @ORM \ JoinColumn (name = "id", referencedColumnName = "id"), я буду работать, но $ PayOrder-> getAccount(), только идентификатор имеет данные, имя acclogin всегда равно null ll

1 Ответ

0 голосов
/ 30 декабря 2018

Doctrine требует, чтобы вы использовали первичный ключ в столбцах соединения.

См. Документацию по JoinColumn() здесь: https://www.doctrine -project.org / projects / doctrine-orm / en /2.6 / reference / annotations-reference.html # annref_joincolumn

В частности, эта строка:

referencedColumnName : имя идентификатора первичного ключа, который используетсядля присоединения этого отношения.

...