我有一个简单的控制器:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
if (!is_null($this->doctrine->em))
{
$em = $this->doctrine->em;
$categorias = $em->getRepository('Entities\Categoria')->findBy([], ['categoria' => 'ASC']); (*)
$data['categorias'] = $categorias;
$dql = "SELECT r FROM Entities\Receita r";
$query = $em->createQuery($dql);
$query->setMaxResults(4);
$receitas = $query->getResult(); (**)
$data2['chamadas'] = $receitas;
//Defino aqui o indice do menu que ficará ativo
$this->session->set_userdata('menu_active', 0);
$this->load->view('html_header');
$this->load->view('menu_categorias', $data);
$this->load->view('conteudo', $data2);
$this->load->view('html_footer');
}
}
}在(*)线上,它工作得很好。但是在(**)行中,我得到了下面的错误。
(!)致命错误:在C:\wamp\www\ControleReceitas_DoctrineORM\application\libraries\Doctrine\DBAL\Driver\AbstractMySQLDriver.php第71行的“字段列表”中有消息'SQLSTATE42S22:列未找到: 1054个未知列'r0_.slug_categoria‘的未识别异常’r0_.slug_categoria‘。 C:\wamp\www\ControleReceitas_DoctrineORM\application\libraries\Doctrine\DBAL\Driver\PDOConnection.php中的PDOException: SQLSTATE42S22:列未找到: 1054行中的“字段列表”中的“r0_.slug_categoria”列
这是一个简单的查询。我想从上面的查询中得到4条记录,但是我得到了这个错误。我真的不知道是怎么回事。它是关于r0_.slug_categoria字段的警告,但该字段位于另一个表中。
我的意图是得到4个随机不同的记录在每页加载。我知道我在这里的疑问不是这样的。但我不能做这个简单的工作.所以,首先,我需要了解出了什么问题才能前进.
下面是我的桌子结构。
CREATE TABLE IF NOT EXISTS `categorias` (
`id_categoria` int(10) unsigned NOT NULL AUTO_INCREMENT,
`categoria` varchar(45) NOT NULL,
`slug_categoria` varchar(255) NOT NULL,
PRIMARY KEY (`id_categoria`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;
CREATE TABLE IF NOT EXISTS `receitas` (
`id_receita` int(10) unsigned NOT NULL AUTO_INCREMENT,
`receita` varchar(255) NOT NULL,
`slug_receita` varchar(255) NOT NULL,
`texto` text NOT NULL,
`categoria` int(10) unsigned NOT NULL,
`foto` varchar(45) DEFAULT NULL,
`adicionada_quando` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id_receita`),
KEY `FK_receita_categoria` (`categoria`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;我做错什么了?
谢谢,马塞洛。
发布于 2015-01-13 05:10:04
我发现了我的问题..。该错误是由于我在实体和映射文件中出错而引发的。
下面是我的映射文件:
Entities\Receita:
type: entity
table: receitas
fields:
idReceita:
type: integer
id: true
generator:
strategy: IDENTITY
column: id_receita
receita:
type: string
length: 45
nullable: false
slugReceita:
type: string
length: 255
nullable: false
column: slug_receita (*)
texto:
type: text
nullable: false
foto:
type: string
length: 45
nullable: true
adicionadaQuando:
type: datetimetz
columnDefinition: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
nullable: false
column: adicionada_quando
manyToOne:
categoria:
targetEntity: Categoria
joinColumn:
name: categoria
referencedColumnName: id_categoria错误位于(*)行,其中它是slug_categoria,正确的是slug_receita。
第二个错误出现在我的实体中:
class Receita
{
/**
* @var integer
*
* @ORM\Column(name="id_receita", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $idReceita;
/**
* @var string
*
* @ORM\Column(name="receita", type="string", length=45, nullable=false)
*/
private $receita;
/**
* @var string
*
* @ORM\Column(name="slug_receita", type="string", length=255, nullable=false) (*)
*/
private $slugReceita;在(*)行中,它是name="slug_categoria",正确的是name="slug_receita“。
我犯了一个映射错误,理论实体生成器将映射错误复制到实体。
顺便说一下..。我现在真的知道,当我做“复制和粘贴”时,我需要更多的注意!)
诚挚的问候。马塞洛。
https://stackoverflow.com/questions/27915091
复制相似问题