2016-04-19 12 views
4

Webアプリケーションプロジェクトで拒否されたトランザクションページの検索フィールドを作成しようとしましたが、symfony2フレームワークを使用しています。エラーがありましただって立ち往生不明なPHP例外Doctrine ORM Query QueryException: "[Semantical Error]行?

'[意味論的エラー]行0、列235に近い 'B b.ediAk403ErrorCodesを登録しよう':エラー:クラスのマトリックス\ MatrixEdiBundle \エンティティ\ EdiTransactionは関連がないという名前edi997Detailsている'

および

'重大なPHP例外Doctrine \ ORM \ Query \ QueryException: "[意味的エラー] MatrixEdiBundle \ MatityEdiBundle \ Entity \ EdiTransactionには、/ tmxpage/apache/htdocsEDI/Editracker/vendor/doctrine/orm/lib/Doctrineにedi997Detailsという名前の関連付けがありません。ここ/ORM/Query/QueryException.phpライン63 '

は(私のリポジトリに)そのために私のコードです:

public function getDetails($gsNumber, $senderId, $receiverId, $page = 1, $limit = 5){ 

    $em = $this->getEntityManager(); 

    $query = $em->createQuery(

     'SELECT partial a.{ediTransactionId, senderId, receiverId, gsNumber, isaNumber, fileName }, 

     partial b.{errorCodeId, noOfTrans}, 

     partial c.{errorCode, condition} 

     FROM MatrixEdiBundle:EdiTransaction a 

     JOIN a.edi997Details b 

     JOIN b.ediAk403ErrorCodes c 

     WHERE b.errorCodeId != 1 

     AND a.flag = 1 

     AND a.gsNumber LIKE :gsNumber 

     AND a.senderId LIKE :senderId 

     AND a.recieverId LIKE :receiverId') 

     ->setParameter('gsNumber', "%gsNumber%") 

     ->setParameter('senderId', "%senderId%") 

     ->setParameter('receiverId'ssss, "%receiverId%") 

     ->setFirstResult(($page-1)*$limit) 

     ->setMaxResults($limit); 



     $paginator = new Paginator($query, $fetchJoinCollection = false); 

     $paginator->setUseOutputWalkers(false); 


    return $paginator; 
} 

、ここではtalble ediAk403ErrorCodesのための私のエンティティコードです:

class EdiAk403ErrorCodes 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="condition", type="string", length=50, nullable=false) 
    */ 
private $condition; 

/** 
* @var integer 
* 
* @ORM\Column(name="error_code", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $errorCode; 

/** 
* Set condition 
* 
* @param string $condition 
* @return EdiAk403ErrorCodes 
*/ 

public function setCondition($condition) 
{ 
    $this->condition = $condition; 

    return $this; 
} 

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

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

/** 
* Get edi997Details 
* 
* @return \Matrix\MatrixEdiBundle\Entity\Edi997Details 
*/ 
public function getEdi997Details() 
{ 
    return $this->edi997Details; 
} 

} 

答えて

3

はあなたのエンティティクラスEdiTransactionがテーブルEdiAk403ErrorCodesと明示的な教義の関係を持っていないようです。だから、次のようにEdiTransactionクラスの正しいアノテーションでフィールド定義を追加してみてください:

EdiTransaction

/** 
* @ORM\ManyToOne(targetEntity="Matrix\MatrixEdiBundle\Entity\Edi997Details", inversedBy="editTransactions") 
* @ORM\JoinColumn(name="edit_details_id", referencedColumnName="id") 
*/ 
private $edi997Details; 

このヘルプは

+0

EdiTransaction Entityクラスでこれを追加した後、これは私が遭遇したエラー "MappingException:エンティティ" Matrix \ MatrixEdiBundle \ Entity \ EdiTransaction "に識別子/主キーが指定されていません。 – geekInThePink

0

単一の文字は、表の短い名前として使用されます。最初の行では、MatrixEdiBundle:EdiTransactionを文字aに関連付けます。したがって、a.edi997Detailsはテーブルの列である場合にのみ意味があります。私はあなたが必要とするすべては、このあると信じて:

FROM MatrixEdiBundle:EdiTransaction a 

    JOIN edi997Details b 

    JOIN ediAk403ErrorCodes c 
+0

@IarsAndersあなたの答えの後、私はこのエラー「[意味論的なエラーが発生しました希望]行0、col 219 'edi997Details':エラー:クラス 'edi997Details'が定義されていません。 – geekInThePink

関連する問題