2017-02-17 2 views
0

Bitte beachten Sie den folgenden Code unten. Dies ist ein Ausschnitt aus einer Funktion.Doktrin 2 Getting 0 Results Von findBy Query

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

Ich habe oben überprüft und es richtig erhalten.

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

Dies gibt 0 Ergebnisse, wenn es 2 zurückgeben soll, die ich in der Datenbank haben. Ich verifizierte, dass ich eine Verbindung zur richtigen Datenbank herstelle, indem ich meine Konfiguration überprüfe und wenn sie nicht richtig gesetzt würde, würde sie Fehler werfen.

Mein EntityManager wird während meines Boostrap-Prozesses erstellt. So sieht es aus. unter

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; 
} 

?> 

Mein benutzer Einheit.

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 
{ 
} 

Die BaseUser erstreckt sich von unten ist

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'); 
    } 
} 

Hier einige Screenshots der Daten in Phpmyadmin.

enter image description here

Was mache ich falsch?

- Mehr Info -

composer.json Datei

{ 
    "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"] 
    } 
} 

Dateistruktur

enter image description here

+0

Vielleicht hat es etwas mit der Erweiterung von der Basisklasse zu tun? würde dies ein Problem verursachen? –

+0

Okay, machte einen kleinen Schritt, ich habe es zu arbeiten, sobald ich die Erweiterung Feature losgeworden bin. Warum würde dies dazu führen, dass dies versaut? Es ist eine Schande, dass es nicht funktioniert, wenn Sie versuchen, die Klasse zu erweitern. –

Antwort

0

Ok fand ich heraus, th Die Antwort. Ich habe manuell Daten in die Datenbank eingegeben, und Sie können dies nicht tun, wenn Sie Erweiterungen verwenden. Das Feld für die Säule discr muss sagen erweitert oder es wird nicht funktionieren. Die Eingabe eines Datensatzes über das ORM zeigte mir, dass dies der richtige Weg war.

Verwandte Themen