2012-03-16 3 views
3

TwitterTweets 엔티티 :교리 2 ManyToOne 매핑 주석

/** 
* MyBundle\CoreBundle\Entity\TwitterTweets 
* 
* @ORM\Table(name="twitter_tweets") 
* @ORM\Entity 
*/ 
class TwitterTweets 
{ 
    /** 
    * @var TwitterUsers 
    * 
    * @ORM\ManyToOne(targetEntity="TwitterUsers", inversedBy="tweets") 
    * @ORM\JoinTable(name="twitter_tweets", 
    * joinColumns={ 
    *  @ORM\JoinColumn(name="twitter_user_id", referencedColumnName="twitter_id") 
    * } 
    *) 
    */ 
    private $twitterUser; 
} 

TwitterUsers 엔티티 :

/** 
* MyBundle\CoreBundle\Entity\TwitterUsers 
* 
* @ORM\Table(name="twitter_users") 
* @ORM\Entity 
*/ 
class TwitterUsers 
{ 
    /** 
    * @var TwitterTweets 
    * 
    * @ORM\OneToMany(targetEntity="TwitterTweets", mappedBy="twitterUser") 
    */ 
    private $tweets; 
} 

twitter_tweets 테이블 :

CREATE TABLE `twitter_tweets` (
`period` int(6) unsigned NOT NULL, 
`tweet_id` varchar(30) NOT NULL, 
`twitter_user_id` bigint(20) unsigned NOT NULL, 
`tweet` varchar(255) NOT NULL, 
`url` text NOT NULL, 
`retweet_count` varchar(10) NOT NULL DEFAULT '0', 
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
PRIMARY KEY (`period`,`tweet_id`), 
KEY `period` (`period`), 
KEY `tweet_id` (`tweet_id`), 
KEY `twitter_user_id` (`twitter_user_id`), 
KEY `created_at` (`created_at`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

twitter_users 테이블 :

CREATE TABLE `twitter_users` (
`twitter_id` bigint(20) unsigned NOT NULL, 
`user` varchar(255) NOT NULL, 
`username` varchar(255) NOT NULL, 
`profile_image_url` text NOT NULL, 
PRIMARY KEY (`twitter_id`), 
KEY `user` (`user`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

이 오류는 간단한 SELECT를 실행 얻을 : 발견되지

$this->getDoctrine()->getRepository('MyBundleCoreBundle:TwitterTweets')->findOneBy(array('tweetId' => $data->tweet_id)) 

칼럼 : 1054 알 수없는 열 '필드 목록'에서 't0.twitterUser_id'

SELECT t0.period AS period1, t0.tweet_id AS tweet_id2, t0.tweet AS tweet3, 
t0.url AS url4, t0.retweet_count AS retweet_count5, t0.created_at AS created_at6, 
t0.twitterUser_id AS twitterUser_id7 
FROM twitter_tweets t0 WHERE t0.tweet_id = ? 

를 내가이 문제를 해결 수있는 방법 발행물?

"메시지": 나는 (관절 식 주석 제외)에만 @ORM \ JoinColumn을 설정하려고하지만 난이 오류 "SQLSTATE [42S02] : 기본 테이블이나 찾을 수 없습니다 전망 : 1146 표 'database.twittertweets_twittertrends을 '존재하지 않음'

답변

4

대일 단방향 협회 매핑를 사용하여 해결 : http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/association-mapping.html#many-to-one-unidirectional

TwitterTweets 엔티티 :

/** 
* MyBundle\CoreBundle\Entity\TwitterTweets 
* 
* @ORM\Table(name="twitter_tweets") 
* @ORM\Entity 
*/ 
class TwitterTweets 
{ 
    /** 
    * @var TwitterUsers 
    * 
    * @ORM\ManyToOne(targetEntity="TwitterUsers") 
    * @ORM\JoinColumn(name="twitter_user_id", referencedColumnName="twitter_id") 
    */ 
    private $twitterUser; 
} 

TwitterUsers 엔티티 :

/** 
* MyBundle\CoreBundle\Entity\TwitterUsers 
* 
* @ORM\Table(name="twitter_users") 
* @ORM\Entity 
*/ 
class TwitterUsers 
{ 
    // ... no properties needed 
} 

jperovic에게 감사드립니다.

0

실제로 Many-To-Many@JoinTable을 통해 정의됩니다. Many-To-One을 정의하려면 당신은 단순히 수행해야합니다

/** 
    * @var TwitterUsers 
    * 
    * @ORM\ManyToOne(targetEntity="TwitterUsers", inversedBy="tweets") 
    * @ORM\JoinColumn(name="twitter_user_id", referencedColumnName="twitter_id") 
    */ 
+0

감사합니다. 이전에 쓴 것처럼 @ORM \ JoinColumn (예제와 똑같이)을 설정하려고했지만 작동하지 않습니다. ** " 메시지 ":"SQLSTATE [42S02] : 기본 테이블 또는 뷰를 찾을 수 없음 : 1146 'database.twittertweets_twittertrends'테이블이 존재하지 않음 ** –

+1

눈이 멀었는지 모르겠지만, 당신이'@ JoinColumn'에 관해 썼던 질문의 마지막 부분. 미안합니다. 엔티티의 맨 위에 넣은'@ Table' 주석으로 질문을 업데이트 할 수 있습니까? 당신이 테이블 이름을 잘못 입력했거나 주석을 넣지 않았다고 생각합니다. ** ... –

+0

이제 테이블 엔티티 맨 위에 테이블 주석을 추가했습니다. 나는 그것이 그들이 맞다고 생각한다. 미리 감사드립니다 !! –