错误:类...没有命名的字段或关联 [英] Error: Class ... has no field or association named

查看:76
本文介绍了错误:类...没有命名的字段或关联的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将文件上传到服务器时遇到此问题。

I'm having this issue when I upload the files to the server.

Error: Class Prizes\PrizesBundle\Entity\Category has no field or association named order_cat

我的类别类别的字段或关联

My Category Class:

    <?php

namespace Prizes\PrizesBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * @ORM\Entity 
 * @ORM\Table(name="category")
 */
class Category
{
  /**
   * @ORM\Id
   * @ORM\Column(type="integer")
   * @ORM\GeneratedValue(strategy="AUTO")
   */
  private $id;

  /**
   * @Gedmo\Translatable
   * @ORM\Column(type="string", length=45, nullable=false)
   */
  private $name;

  /**
   * @Gedmo\Translatable
   * @ORM\Column(type="string", length=45, nullable=false)
   */
  private $description;

  /**
   * @ORM\Column(type="string", length=255, nullable=false)
   */
  private $thumb;

  /**
   * @ORM\Column(type="string", length=255, nullable=false)
   */
  private $img;

  /**
   * @ORM\ManyToOne(targetEntity="Optime\AppStatusBundle\Entity\Status")
   * @ORM\JoinColumn(name="status", referencedColumnName="id")
   */
  private $status;

  /**
   * @Gedmo\Timestampable(on="create")
   * @ORM\Column(type="datetime")
   */
  private $created;

  /**
   * @Gedmo\Timestampable(on="update")
   * @ORM\Column(type="datetime")
   */
  private $modified;

  /**
   * @ORM\ManyToMany(targetEntity="Prize")
   * @ORM\JoinTable(name="prize_has_category",
   *      joinColumns={@ORM\JoinColumn(name="category", referencedColumnName="id")},
   *      inverseJoinColumns={@ORM\JoinColumn(name="prize", referencedColumnName="id")}
   *      )
   */
  private $prizes;

  /**
   * @Gedmo\Locale
   * Used locale to override Translation listener`s locale
   * this is not a mapped field of entity metadata, just a simple property
   */
  private $locale;
  /**
   * @Gedmo\Translatable
   * @ORM\Column(type="string", length=45, nullable=false)
   */
  private $order_cat;
  //    /**
  //     * @Gedmo\TreeLeft
  //     * @ORM\Column(name="lft", type="integer")
  //     */
  //    private $lft;

  //    /**
  //     * @Gedmo\TreeLevel
  //     * @ORM\Column(name="lvl", type="integer")
  //     */
  //    private $lvl;

  //    /**
  //     * @Gedmo\TreeRight
  //     * @ORM\Column(name="rgt", type="integer")
  //     */
  //    private $rgt;

  //    /**
  //     * @Gedmo\TreeRoot
  //     * @ORM\Column(name="root", type="integer", nullable=true)
  //     */
  //    private $root;

  //    /**
  //     * @Gedmo\TreeParent
  //     * @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
  //     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL")
  //     */
  //    private $parent;

  //    /**
  //     * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
  //     * @ORM\OrderBy({"lft" = "ASC"})
  //     */
  //    private $children;

  public function __construct( )
  {
    $this->prizes = new \Doctrine\Common\Collections\ArrayCollection( );
  }

  public function getId( )
  {
    return $this->id;
  }

  public function setName( $name )
  {
    $this->name = $name;
  }

  public function getName( )
  {
    return $this->name;
  }

  public function setDescription( $description )
  {
    $this->description = $description;
  }

  public function getDescription( )
  {
    return $this->description;
  }

  public function setThumb( $thumb )
  {
    $this->thumb = $thumb;
  }

  public function getThumb( )
  {
    return $this->thumb;
  }

  public function setImg( $img )
  {
    $this->img = $img;
  }

  public function getImg( )
  {
    return $this->img;
  }

  public function setStatus( \Optime\AppStatusBundle\Entity\Status $status )
  {
    $this->status = $status;
  }

  public function getStatus( )
  {
    return $this->status;
  }

  public function getCreated( )
  {
    return $this->created;
  }

  public function getModified( )
  {
    return $this->modified;
  }

  public function getPrizes( )
  {
    return $this->prizes;
  }

  public function getOrderCat(){
      return $this->order_cat;
  }

  public function setOrderCat($order_cat){
      $this->order_cat = $order_cat;
  }

  static public function getListDQL( )
  {
    return "SELECT cat FROM " . Category::getFQCN( ) . " cat
                        WHERE cat.status = 1";
  }

  static public function getFQCN( )
  {
    return 'Prizes\PrizesBundle\Entity\Category';
  }
}

这就是我构建表单的方式

This is how I'm building the form

public function buildForm( FormBuilder $builder, array $options )
{
    $query = new QueryBuilder( $this->em);
    $query->addSelect( 's' )->from( Status::getFQCN( ), 's' )->join( 's.status_entity', 'se' )->where( "se.name = 'Prize'" );
    $builder->add( 'status', 'entity', array ( 'class' => 'AppStatusBundle:Status', 'property' => 'name', 'query_builder' => $query, "required" => false, 'empty_value' => ' - SELECT - ') );
    $builder->add( 'name', 'text', array ( "required" => false) );
    $builder->add( 'country', 'entity',array ('class' => 'CSCBundle:SystemCountry', 'property' => 'country.name', "required" => false, 'empty_value' => ' - SELECT - ') );
    $builder->add( 'category', 'entity', array ('class' => 'PrizesBundle:Category', 'property' => 'name', "required" => false, 'empty_value' => ' - SELECT - ', 'query_builder' => 
                function(EntityRepository $er) {
                        return $er->createQueryBuilder('c')->join( 'c.status', 's' )->where( "s.name = 'Alive'")
                            ->orderBy('c.order_cat', 'ASC');
                },) );
    $builder->add('brand', 'entity', array ( 'class' => 'PrizesBundle:Brand', 'property' => 'name', "required" => false, 'empty_value' => ' - SELECT - ') );
}

我曾经有

return "SELECT cat FROM " . Category::getFQCN( ) . " cat
                        WHERE cat.status = 1 ORDER BY cat.order_cat"

SELECT cat FROM " . Category::getFQCN( ) . " cat
                        WHERE cat.status = 1

但是当我尝试这样做时,我得到 [语义错误]第0行,列108在'order_cat AS'附近:错误:类奖品\PrizesBundle\Entity\Category没有名为order_cat的字段或关联

but when I try that, I get [Semantical Error] line 0, col 108 near 'order_cat AS': Error: Class Prizes\PrizesBundle\Entity\Category has no field or association named order_cat

什么是我做错了吗?我怎样才能解决这个问题?我已经删除了缓存并验证了文件。

What am I doing wrong? How can I fix this? I already deleted the cache and verified the files.

编辑:我需要同时回答这两个错误。

推荐答案

您的代码看起来还不错。您可以尝试以下操作:

You code looks ok. You could try this:

名为 order_cat 的字段为 private ,因此可能是由于反射的限制,该字段无法直接访问,只能通过getter / setter访问。

Field named order_cat is private so it might be that due to reflection's limitation this field cannot be accessed directly but only via getters/setters.

您是否尝试过 ORDER BY cat.orderCat

这篇关于错误:类...没有命名的字段或关联的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆