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.
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
Vielleicht hat es etwas mit der Erweiterung von der Basisklasse zu tun? würde dies ein Problem verursachen? –
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. –