我如何解决语义错误:“类没有名为..”的关联

2024-05-08

我正在关注 symblog symfony2 教程的第 5 部分:

http://tutorial.symblog.co.uk/docs/customising-the-view-more-with-twig.html

标题下:主页 - 博客和评论

当我更新时:

// src/Blogger/BlogBundle/Repository/BlogRepositoy.php

public function getLatestBlogs($limit = null)
{
    $qb = $this->createQueryBuilder('b')
           ->select('b, c')
           ->leftJoin('b.comments', 'c')
           ->addOrderBy('b.created', 'DESC');

    if (false === is_null($limit))
    $qb->setMaxResults($limit);

    return $qb->getQuery()
          ->getResult();
}

当我更新时:

{# src/Blogger/BlogBundle/Resources/views/Page/index.html.twig #}

{# .. #}

<footer class="meta">
    <p>Comments: <a href="{{ path('BloggerBlogBundle_blog_show', { 'id': blog.id }) }}#comments">{{ blog.comments|length }}</a></p>
    <p>Posted by <span class="highlight">{{ blog.author }}</span> at {{ blog.created|date('h:iA') }}</p>
    <p>Tags: <span class="highlight">{{ blog.tags }}</span></p>
</footer>

{# .. #}

然后我刷新浏览器并收到错误:

[Semantical Error] line 0, col 71 near 'c ORDER BY b.created': Error: Class   
Blogger\BlogBundle\Entity\Blog has no association named comments
500 Internal Server Error - QueryException


<?php
 // src/Blogger/BlogBundle/Entity/Blog.php

 namespace Blogger\BlogBundle\Entity;

 use Doctrine\ORM\Mapping as ORM;
 use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\Entity(repositoryClass="Blogger\BlogBundle\Repository\BlogRepository")
 * @ORM\Table(name="blog")
 * @ORM\HasLifecycleCallbacks()
 */
class Blog
{
public function __toString()
{
    return $this->getTitle();
}

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(type="string")
 */
protected $title;

/**
 * @ORM\Column(type="string", length=100)
 */
protected $author;

/**
 * @ORM\Column(type="text")
 */
protected $blog;

 /**
 * @ORM\Column(type="string", length="20")
 */
protected $image;

/**
 * @ORM\Column(type="text")
 */
protected $tags;

protected $comments;

/**
 * @ORM\Column(type="datetime")
 */
protected $created;

/**
 * @ORM\Column(type="datetime")
 */
protected $updated;


public function __construct()
{
    $this->comments = new ArrayCollection();

    $this->setCreated(new \DateTime());
    $this->setUpdated(new \DateTime());
}

public function setUpdatedValue()
{
   $this->setUpdated(new \DateTime());
}

/**
 * Get id
 *
 * @return integer 
 */
public function getId()
{
    return $this->id;
}

/**
 * Set title
 *
 * @param string $title
 */
public function setTitle($title)
{
    $this->title = $title;
}

/**
 * Get title
 *
 * @return string 
 */
public function getTitle()
{
    return $this->title;
}

/**
 * Set author
 *
 * @param string $author
 */
public function setAuthor($author)
{
    $this->author = $author;
}

 /**
 * Get author
 *
 * @return string 
 */
public function getAuthor()
{
    return $this->author;
}

/**
 * Set blog
 *
 * @param text $blog
 */
public function setBlog($blog)
{
    $this->blog = $blog;
}

/**
 * Get blog
 *
 * @return text 
 */
public function getBlog($length = null)
{
    if (false === is_null($length) && $length > 0)
       return substr($this->blog, 0, $length);
    else
       return $this->blog;
}

/**
 * Set image
 *
 * @param string $image
 */
public function setImage($image)
{
    $this->image = $image;
}

/**
 * Get image
 *
 * @return string 
 */
public function getImage()
{
    return $this->image;
}

/**
 * Set tags
 *
 * @param text $tags
 */
public function setTags($tags)
{
    $this->tags = $tags;
}

/**
 * Get tags
 *
 * @return text 
 */
public function getTags()
{
    return $this->tags;
}

/**
 * Set created
 *
 * @param datetime $created
 */
public function setCreated($created)
{
    $this->created = $created;
}

/**
 * Get created
 *
 * @return datetime 
 */
public function getCreated()
{
    return $this->created;
}

/**
 * Set updated
 *
 * @param datetime $updated
 */
public function setUpdated($updated)
{
    $this->updated = $updated;
}

/**
 * Get updated
 *
 * @return datetime 
 */
public function getUpdated()
{
    return $this->updated;
}
}

请帮助解决这个问题。我不知道我哪里错了

thanks


您没有粘贴 src/Blogger/BlogBu​​ndle/Entity/Blog.php 文件。这将有助于解决您的问题。

很可能您没有向实体添加注释字段(或者没有正确注释它)。

类似问题:Doctrine2:这些实体之间的关联有什么问题? https://stackoverflow.com/questions/5568394/doctrine2-what-is-wrong-with-the-association-between-these-entities

编辑:现在,当您粘贴实体时,我可以看到注释字段没有注释。 Doctrine 的实体管理器对此一无所知。您必须提供映射(在您的情况下通过注释)。

EDIT 2:

在您的实体中,您应该有(src/Blogger/BlogBu​​ndle/Entity/Blog.php):

/**
 * @ORM\OneToMany(targetEntity="Comment", mappedBy="blog")
 */
protected $comments;

但是你有:

protected $comments;

映射缺失。教义不知道如何使用你的领域。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何解决语义错误:“类没有名为..”的关联 的相关文章

  • Laravel 5 命名约定

    我对 Laravel 约定有点困惑 因为我是这个框架的新手 我正在关注 Jeffrey Way 他使用的 Laracasts 视频Plural对于控制器名称 E g 页面控制器 卡片控制器 帖子控制器 但如果我参考官方文档Laravel g
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求
  • 获取php中两个日期之间的天数[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我试图获取两个日期之间的天数 但返回的结果不正确 这是我的尝试 t time get the time Y m d g
  • Yii2:使用 Pjax POST 方法和分页在 Gridview 中搜索

    我是 yii2 的初学者 尝试在搜索按钮上使用 Pjax 来搜索 Gridview 中的字段 我已经使用 GET 方法完成此操作 但我想使用 POST 方法完成此操作 那么我该如何使用 Yii2 Pjax post 方法 和分页来做到这一点
  • PHP 如何查找自日期时间以来经过的时间? [复制]

    这个问题在这里已经有答案了 如何查找自日期时间戳记以来经过的时间2010 04 28 17 25 43 最终输出文本应该是这样的xx Minutes Ago xx Days Ago 大多数答案似乎都集中在将日期从字符串转换为时间 您似乎主要
  • Facebook Graph API - 如何用新行发布到墙上?

    我正在使用 Facebook Graph API 但遇到一个问题 我找不到任何方法如何使用一些 HTML 代码发布到墙上or新线路 怎么办呢 这是我的代码
  • PHP 文件大小报告旧大小

    以下代码是我编写的 PHP Web 服务的一部分 它需要一些上传的 Base64 数据 对其进行解码 然后将其附加到文件中 这一切都很好 问题是 当我在追加操作之后读取文件大小时 我得到了追加操作之前文件的大小 fileOut fopen
  • 我应该使用 htmlspecialchars 或 mysql_real_escape_string 或两者都使用[重复]

    这个问题在这里已经有答案了 我让用户输入一些信息 姓名 出生日期等 然后我必须将这些值插入数据库 我应该使用mysql real escape string http php net mysql real escape string防止 m
  • PHP:str_replace() - 忽略空格

    我有一个类似的字符串 我想将其替换为 问题是我不知道之间是否会有空格 和 可能有空白 也可能没有空白 可能有制表符或可能有换行符 我该如何更换
  • $_POST 返回空

    尝试练习一下 ajax 和 PHP 我不明白为什么每当我发送一些东西时 它都会返回空或未定义的索引 PHP 返回空 JS form submit function var meth this attr action var msg msg
  • PHP:我是否将事件驱动编程与信号感知接口(信号和槽/观察者模式)混淆了?

    我看到很多人说 Symfony2 Zend Framework 2 等都是事件驱动的 在桌面世界中 通过事件驱动编程 我了解到应用程序每当其状态发生变化时都会通知其观察者 由于 PHP 应用程序是无状态的 因此无法执行此类操作 IE 让观察
  • openssl_decrypt 标签值

    我在网站中使用 openssl encrypt decrypt 方法 但在使用 tag 选项时遇到了一些问题 openssl encrypt data method key options iv tag openssl decrypt da
  • PSR-2 编码标准:为什么仅包含 PHP 的文件中没有 PHP 结束标记? [复制]

    这个问题在这里已经有答案了 我刚刚听说PSR 2编码标准 http www php fig org psr psr 2 在对此问题的评论中 是否有任何理由在方法和成员变量名称之前使用 public 关键字 https stackoverfl
  • Mysqli get_result替代方案

    我刚刚将所有 sql 查询更改为使用 mysqli 准备好的语句 为了加快这个过程 我创建了一个函数 称为performQuery 取代mysql query 它需要传入查询 绑定 如 sdss 和变量 然后执行所有准备好的语句 这意味着更
  • PHP 中消息队列和工作系统的有效架构?

    我正在尝试了解我想要在 PHP 应用程序中实现的消息队列模型和作业 我的目标是卸载需要发送到多个第三方 API 的消息 数据 因此访问它们不会减慢客户端的速度 所以将数据发送到消息队列是理想的 我考虑过仅使用 Gearman 来保存 MQ
  • Symfony错误在链配置的命名空间XXX中找不到类XXX

    关于这个主题已经有一些其他问题 但没有一个真正有帮助 我是 Symfony 的新手 所以很难理解它 我在文件 Client IntranetBundle LDAP LDAPAuthenticationProvider php 中 此代码导致
  • PHP:使用输入和输出参数(不是“INOUT”)调用 MySQL 存储过程

    我想从 PHP 调用 MySQL 中的存储过程 该过程需要输入and输出参数 not INOUT 参数 举一个简单的例子 假设我在 MySQL 中有以下存储过程 DELIMITER DROP PROCEDURE IF EXISTS test
  • 有没有办法重置特定类的所有静态属性?

    您可能知道 静态属性使测试变得困难 有没有办法将特定类的所有静态属性重置回其初始状态 理想情况下 这不需要为每个类定制代码 但可以通过继承以通用方式使用 或者完全从类外部使用 请不要回复 不要使用静态属性 之类的内容 谢谢 假设您正在使用
  • 服务器端文件验证在 Yii.2.0 中不起作用

    Is the FileValidatorYii2 中的类只支持客户端验证 我使用代码编写了文件上传系统 在模型中 public function rules return allAllowedFileType safe allAllowed

随机推荐