Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro na compilação

Olá Alura,

estou com erro aqui. Vou deixar o link do git aqui em baixo: git@github.com:tiagobrandao03/2612-doctrine.git

Aqui está o erro:

ID: 1 Nome: Ana Maria Telefones: PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1 no such column: t0.student_id in C:\xampp\htdocs\2612-doctrine\vendor\doctrine\dbal\src\Driver\PDO\Connection.php:59 Stack trace: #0 C:\xampp\htdocs\2612-doctrine\vendor\doctrine\dbal\src\Driver\PDO\Connection.php(59): PDO->prepare('SELECT t0.id AS...') #1 C:\xampp\htdocs\2612-doctrine\vendor\doctrine\dbal\src\Connection.php(1095): Doctrine\DBAL\Driver\PDO\Connection->prepare('SELECT t0.id AS...') #2 C:\xampp\htdocs\2612-doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\Entity\BasicEntityPersister.php(1865): Doctrine\DBAL\Connection->executeQuery('SELECT t0.id AS...', Array, Array) #3 C:\xampp\htdocs\2612-doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\Entity\BasicEntityPersister.php(1806): Doctrine\ORM\Persisters\Entity\BasicEntityPersister->getOneToManyStatement(Array, Object(Alura\Doctrine\Entity\Student)) #4 C:\xampp\htdocs\2612-doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php(3037): Doctrine\ORM\Persisters\Entity\BasicEntityPersister->loadOneToManyCollection(Array, Object(Alura\Doctrine\Entity\Student), Object(Doctrine\ORM\PersistentCollection)) #5 C:\xampp\htdocs\2612-doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\PersistentCollection.php(698): Doctrine\ORM\UnitOfWork->loadCollection(Object(Doctrine\ORM\PersistentCollection)) #6 C:\xampp\htdocs\2612-doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\PersistentCollection.php(213): Doctrine\ORM\PersistentCollection->doInitialize() #7 C:\xampp\htdocs\2612-doctrine\vendor\doctrine\collections\lib\Doctrine\Common\Collections\AbstractLazyCollection.php(294): Doctrine\ORM\PersistentCollection->initialize() #8 C:\xampp\htdocs\2612-doctrine\bin\list-students.php(19): Doctrine\Common\Collections\AbstractLazyCollection->getIterator() #9 {main}

1 resposta
solução!

Olá, Tiago.

Tudo bem?

Pelo erro que você descreveu, parece que o Doctrine está tentando acessar uma coluna que não existe na tabela do banco de dados. O erro no such column: t0.student_id indica que a coluna student_id não foi encontrada.

Aqui estão alguns passos que você pode seguir para tentar resolver o problema:

  1. Verifique o Mapeamento da Entidade: Certifique-se de que a entidade Student está corretamente mapeada para a tabela no banco de dados e que a coluna student_id realmente existe. Por exemplo, se você está usando annotations, verifique se algo assim está presente na sua entidade:

    /**
     * @Entity
     * @Table(name="students")
     */
    class Student
    {
        /**
         * @Id
         * @GeneratedValue
         * @Column(type="integer")
         */
        private $id;
        
        // outras propriedades e mapeamentos...
    }
    
  2. Atualize o Esquema do Banco de Dados: Se você fez alterações nas entidades, pode ser necessário atualizar o esquema do banco de dados. Você pode fazer isso usando o comando de migração do Doctrine:

    php bin/console doctrine:schema:update --force
    
  3. Verifique as Relações: Se você tem uma relação OneToMany ou ManyToOne, verifique se ela está corretamente configurada. Por exemplo:

    /**
     * @OneToMany(targetEntity="Phone", mappedBy="student")
     */
    private $phones;
    

    E na entidade Phone:

    /**
     * @ManyToOne(targetEntity="Student", inversedBy="phones")
     * @JoinColumn(name="student_id", referencedColumnName="id")
     */
    private $student;
    
  4. Recrie o Banco de Dados: Se nada disso funcionar, você pode tentar recriar o banco de dados para garantir que todas as tabelas e colunas estão corretas:

    php bin/console doctrine:database:drop --force
    php bin/console doctrine:database:create
    php bin/console doctrine:schema:update --force
    

Espero que essas dicas te ajudem a resolver o problema. Bons estudos!