2017-02-17 14 views
0

Обратите внимание на следующий код ниже. Это фрагмент внутри функции.Доктрина 2 Получение 0 Результаты поиска FindBy

global $entityManager; 
$username = $request->getParam('username'); 
$password = $request->getParam('password'); 

Я дважды проверил выше и его правильность.

$results = $entityManager->getRepository('Entity\User')->findBy(array('username' => $username, 'password' => $password)); 

Это возвращает 0 результаты, когда он должен вернуть 2, что у меня есть в базе данных. Я проверил, что подключаюсь к правильной базе данных, проверяя мою конфигурацию, и если она не установлена ​​правильно, это приведет к ошибкам.

My entityManager создан во время моего процесса конвертации. Вот как это выглядит.

bootstrap.php

<?php 

use Doctrine\ORM\Tools\Setup; 
use Doctrine\ORM\EntityManager; 

require_once('config/config.php'); 

$paths = array(__DIR__."/../entities"); 

// The database connection configuration 
$dbParams = array(
    'driver' => 'pdo_mysql', 
    'host'  => $config['host'], 
    'user'  => $config['dbusername'], 
    'password' => $config['dbpassword'], 
    'dbname' => $config['dbname'], 
); 

$config = Setup::createAnnotationMetadataConfiguration($paths, $debug, null, null, false); 
$entityManager = EntityManager::create($dbParams, $config); 

function GetEntityManager(){ 
    global $entityManager; 
    return $entityManager; 
} 

?> 

Мой объект пользователя находится ниже.

User.php

<?php 

/** 
* Auto generated by MySQL Workbench Schema Exporter. 
* Version 3.0.3 (doctrine2-annotation) on 2017-02-17 06:04:14. 
* Goto https://github.com/johmue/mysql-workbench-schema-exporter for more 
* information. 
*/ 

namespace Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Entity\BaseUser; 

/** 
* Entity\User 
* 
* @ORM\Entity() 
*/ 
class User extends BaseUser 
{ 
} 

BaseUser простирается от ниже

BaseUser.php

<?php 

/** 
* Auto generated by MySQL Workbench Schema Exporter. 
* Version 3.0.3 (doctrine2-annotation) on 2017-02-17 06:04:14. 
* Goto https://github.com/johmue/mysql-workbench-schema-exporter for more 
* information. 
*/ 

namespace Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* Entity\User 
* 
* @ORM\Entity() 
* @ORM\Table(name="`user`", uniqueConstraints={@ORM\UniqueConstraint(name="username_UNIQUE", columns={"username"})}) 
* @ORM\InheritanceType("SINGLE_TABLE") 
* @ORM\DiscriminatorColumn(name="discr", type="string") 
* @ORM\DiscriminatorMap({"base":"BaseUser", "extended":"User"}) 
*/ 
class BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer", options={"unsigned":true}) 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=45, nullable=true) 
    */ 
    protected $username; 

    /** 
    * @ORM\Column(name="`password`", type="string", length=45, nullable=true) 
    */ 
    protected $password; 

    /** 
    * @ORM\OneToMany(targetEntity="Authtoken", mappedBy="user") 
    * @ORM\JoinColumn(name="id", referencedColumnName="user_id", nullable=false) 
    */ 
    protected $authtokens; 

    /** 
    * @ORM\OneToMany(targetEntity="Phonenumber", mappedBy="user") 
    * @ORM\JoinColumn(name="id", referencedColumnName="user_id", nullable=false) 
    */ 
    protected $phonenumbers; 

    public function __construct() 
    { 
     $this->authtokens = new ArrayCollection(); 
     $this->phonenumbers = new ArrayCollection(); 
    } 

    /** 
    * Set the value of id. 
    * 
    * @param integer $id 
    * @return \Entity\User 
    */ 
    public function setId($id) 
    { 
     $this->id = $id; 

     return $this; 
    } 

    /** 
    * Get the value of id. 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set the value of username. 
    * 
    * @param string $username 
    * @return \Entity\User 
    */ 
    public function setUsername($username) 
    { 
     $this->username = $username; 

     return $this; 
    } 

    /** 
    * Get the value of username. 
    * 
    * @return string 
    */ 
    public function getUsername() 
    { 
     return $this->username; 
    } 

    /** 
    * Set the value of password. 
    * 
    * @param string $password 
    * @return \Entity\User 
    */ 
    public function setPassword($password) 
    { 
     $this->password = $password; 

     return $this; 
    } 

    /** 
    * Get the value of password. 
    * 
    * @return string 
    */ 
    public function getPassword() 
    { 
     return $this->password; 
    } 

    /** 
    * Add Authtoken entity to collection (one to many). 
    * 
    * @param \Entity\Authtoken $authtoken 
    * @return \Entity\User 
    */ 
    public function addAuthtoken(Authtoken $authtoken) 
    { 
     $this->authtokens[] = $authtoken; 

     return $this; 
    } 

    /** 
    * Remove Authtoken entity from collection (one to many). 
    * 
    * @param \Entity\Authtoken $authtoken 
    * @return \Entity\User 
    */ 
    public function removeAuthtoken(Authtoken $authtoken) 
    { 
     $this->authtokens->removeElement($authtoken); 

     return $this; 
    } 

    /** 
    * Get Authtoken entity collection (one to many). 
    * 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getAuthtokens() 
    { 
     return $this->authtokens; 
    } 

    /** 
    * Add Phonenumber entity to collection (one to many). 
    * 
    * @param \Entity\Phonenumber $phonenumber 
    * @return \Entity\User 
    */ 
    public function addPhonenumber(Phonenumber $phonenumber) 
    { 
     $this->phonenumbers[] = $phonenumber; 

     return $this; 
    } 

    /** 
    * Remove Phonenumber entity from collection (one to many). 
    * 
    * @param \Entity\Phonenumber $phonenumber 
    * @return \Entity\User 
    */ 
    public function removePhonenumber(Phonenumber $phonenumber) 
    { 
     $this->phonenumbers->removeElement($phonenumber); 

     return $this; 
    } 

    /** 
    * Get Phonenumber entity collection (one to many). 
    * 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getPhonenumbers() 
    { 
     return $this->phonenumbers; 
    } 

    public function __sleep() 
    { 
     return array('id', 'username', 'password'); 
    } 
} 

Вот некоторые скриншоты данных в PHPMyAdmin.

enter image description here

Что я делаю неправильно?

- Другая информация -

composer.json файл

{ 
    "require": { 
     "doctrine/orm": "^2.5", 
     "slim/slim": "^3.0", 
     "slim/twig-view": "^2.1", 
     "components/jquery": "*", 
     "components/normalize.css": "*", 
     "robloach/component-installer": "*", 
     "paragonie/random_compat": "^2.0" 
    }, 
    "autoload": { 
     "psr-4": {"app\\":"app","Entity\\":"entities/"}, 
     "files": ["lib/utilities.php","lib/security.php"] 
    } 
} 

Структура файла

enter image description here

+0

Возможно, это имеет какое-то отношение к расширению от базового слоя? это вызовет проблему? –

+0

Хорошо, немного продвинулся, я получил его, чтобы работать, как только я избавился от расширяющейся функции. Почему это может испортиться? Жаль, что он не работает, когда вы пытаетесь расширить класс. –

ответ

0

Ok я узнал ю ответ. Я вручную вводил данные в базу данных, и вы не можете это делать при использовании экстентов. Поле для колокола discr должно сказать extended или оно не будет работать. Ввод записи через ORM показал мне, что это правильный способ сделать это.