После входа через Facebook возврат на главную страницу приводит к появлению DBALException.
Я пытаюсь интегрировать FOSUserBundle
, SonataUserBundle
и HWIOauth
Я настроил SonataUserBundle
продлить FOSUserBundle
,
Используя это руководство в качестве основы, мне удалось настроить интеграцию OAuth: пользователь успешно создан после аутентификации с использованием, в данном случае, учетной записи Facebook.
После аутентификации пользователь автоматически перенаправляется на мою страницу индекса, которая сразу после этого выдает исключение DBALEx
DEBUG - Read SecurityContext from the session
DEBUG - Reloading user from user provider.
из-за недопустимой ссылки на таблицу в WHERE
пункт:
An exception occurred while executing 'SELECT t1.username AS username2, [more t1 references] FROM fos_user t1 WHERE t0.id = ? LIMIT 1' with params {"1":1}:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.id' in 'where clause'
Я понимаю что t0
ссылка недействительна, потому что она не включена в FROM
пункт, но понятия не имею, почему это относится к t0.id
вместо t1.id
(надеюсь) Соответствующий Кодекс
Если я правильно понимаю, мой пользовательский объект расширяет Sonata
Пользовательский объект, который, в свою очередь, расширяет FOS
Пользовательский объект?
Application \ соната \UserBundle\Entity\User.php
<?php
/**
* This file is part of the <name> project.
*
* (c) <yourname> <youremail>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Application\Sonata\UserBundle\Entity;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;
/**
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends )
*
* References :
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en
*
* @author <yourname> <youremail>
*/
class User extends BaseUser
{
/**
* @var integer $id
*/
protected $id;
/**
* Get id
*
* @return integer $id
*/
public function getId()
{
return $this->id;
}
}
Сайты \SiteBundle\Entity\User.php
<?php
namespace Sites\SiteBundle\Entity;
use Application\Sonata\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/** @ORM\Column(name="facebook_id", type="string", length=255, nullable=true) */
private $facebook_id;
/** @ORM\Column(name="facebook_access_token", type="string", length=255, nullable=true) */
private $facebook_access_token;
/** @ORM\Column(name="google_id", type="string", length=255, nullable=true) */
private $google_id;
/** @ORM\Column(name="google_access_token", type="string", length=255, nullable=true) */
private $google_access_token;
public function __construct()
{
parent::__construct();
// your code here
}
соответствующая часть config.yml
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Sites\SiteBundle\Entity\User
sonata_user:
security_acl: false # was true
manager_type: orm
class:
user: Sites\SiteBundle\Entity\User