【发布时间】:2015-03-10 23:49:32
【问题描述】:
我有这个简单的控制器:
<?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');
}
}
}
在 (*) 行中,它工作正常。但在 (**) 行,我收到以下错误。
( ! ) 致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE [42S22]:未找到列:1054 未知列 '字段列表'中的'r0_.slug_categoria' C:\wamp\www\ControleReceitas_DoctrineORM\application\libraries\Doctrine\DBAL\Driver\AbstractMySQLDriver.php 在第 71 行
PDOException:SQLSTATE[42S22]:未找到列:1054 未知列 '字段列表'中的'r0_.slug_categoria' C:\wamp\www\ControleReceitas_DoctrineORM\application\libraries\Doctrine\DBAL\Driver\PDOConnection.php 在第 104 行
这是一个简单的查询。我想从上面的查询中获取 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 ;
我做错了什么?
谢谢, 马塞洛。
【问题讨论】:
标签: php doctrine-orm