NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Šimon Bálga:7.8.2017 19:00

Dobrý den, snažím se vytáhnout z databáze jednu entitu, ale pro mě z nepochopitelného důvodu mi doctrine 2 generuje do dotazu i to, co tam nemá co dělat. Mám 2 entity.
User

/**
 * @ORM\OneToOne(targetEntity="UserSettings", mappedBy="user", cascade={"remove"})
 */
public $settings;

a settings

/**
 * @ORM\OneToOne(targetEntity="User", inversedBy="settings")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
public $user;

settings má v tabulce kolonku user_id, kam se mi má uložit ID uživatele, ke kterému patří. Problém však nastává při přihlašování uživatelů, kde mám dotaz:

return $this->em->createQuery('
        SELECT PARTIAL u.{id, name, password, roles}
        FROM App\Model\Entities\User u
        WHERE u.name = :name
')
        ->setParameter('name', $username)
        ->setMaxResults(1)
        ->getOneOrNullResult();

Nicméně mi to vrátí error s následující chybovou hláškou:

Doctrine\DBAL\Exception\InvalidFieldNameException

An exception occurred while executing 'SELECT t0.password AS password_1, t0.email AS email_2, t0.ip AS ip_3, t0.roles AS roles_4, t0.id AS id_5, t0.username AS username_6, t0.settings_id AS settings_id_7 FROM users t0 WHERE t0.username = ? LIMIT 1' with params ["asd"]:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.settings_id' in 'field list'

ono to na uživateli chce vyhledat settings_id, ale já to mám v setting entitě. Nevíte, jak to opravit?
Budu moc vděčný za jakékoli rady. (cache jsem mazal)

 
Odpovědět
7.8.2017 19:00
Avatar
Odpovídá na Šimon Bálga
Martin Konečný (pavelco1998):7.8.2017 19:14

Ahoj,

zkus prohodit ty atributy 'mappedBy' a 'inversedBy'. Ty takhle Doctrine říkáš, že vlastníkem vazby je entita User, přičemž cizí klíč v DB máš v tabulce 'settings', tudíž vlastníkem by měla být entita Settings.

Nahoru Odpovědět
7.8.2017 19:14
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.