Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条令2多通映射注释_Php_Symfony_Doctrine Orm_Mysql Error 1146 - Fatal编程技术网

Php 条令2多通映射注释

Php 条令2多通映射注释,php,symfony,doctrine-orm,mysql-error-1146,Php,Symfony,Doctrine Orm,Mysql Error 1146,TwitterTweets实体: /** * MyBundle\CoreBundle\Entity\TwitterTweets * * @ORM\Table(name="twitter_tweets") * @ORM\Entity */ class TwitterTweets { /** * @var TwitterUsers * * @ORM\ManyToOne(targetEntity="TwitterUsers", inversedBy="t

TwitterTweets实体:

/**
 * 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;
}
/**
 * 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
{
    /**
     * @var TwitterTweets
     *
     * @ORM\OneToMany(targetEntity="TwitterTweets", mappedBy="twitterUser")
     */
    private $tweets;
}
/**
 * MyBundle\CoreBundle\Entity\TwitterUsers
 *
 * @ORM\Table(name="twitter_users")
 * @ORM\Entity
 */
class TwitterUsers
{
    // ... no properties needed
}
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_用户表:

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;
我在执行简单的选择时遇到此错误:

$this->getDoctrine()->getRepository('MyBundleCoreBundle:TwitterTweets')->findOneBy(array( 'tweetId' => $data->tweet_id ))
未找到列:“字段列表”中的1054未知列“t0.twitterUser\u 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(没有JoinTable注释),但出现以下错误:


“消息”:“SQLSTATE[42S02]:未找到基表或视图:1146表”数据库。twittertweets\u twittertrends“不存在”实际上
多对多
是通过
@JoinTable
定义的。要定义多对一
,只需执行以下操作:

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

使用多对一单向关联映射解决:

TwitterTweets实体:

/**
 * 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;
}
/**
 * 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
{
    /**
     * @var TwitterTweets
     *
     * @ORM\OneToMany(targetEntity="TwitterTweets", mappedBy="twitterUser")
     */
    private $tweets;
}
/**
 * MyBundle\CoreBundle\Entity\TwitterUsers
 *
 * @ORM\Table(name="twitter_users")
 * @ORM\Entity
 */
class TwitterUsers
{
    // ... no properties needed
}

感谢jperovic的帮助:)

谢谢你的帮助,但正如我之前写的那样,我试图只设置@ORM\JoinColumn(与你的示例完全相同),但它不起作用:“message:“SQLSTATE[42S02]:找不到基表或视图:1146 table'数据库。twittertweets\u twittertrends'不存在”,我不知道我是瞎子还是什么,但我完全错过了你问题的最后一部分,你在那里写的关于
@JoinColumn
。很抱歉。你能用你放在实体顶部的
@Table
注释更新你的问题吗?我怀疑您可能拼错了表名,或者根本没有放注释……我现在已经在实体的顶部添加了表注释。我想他们是对的。提前谢谢!!是的,这些似乎是正确的。我看不出twittertrends表名后缀的来源。尽管这两个实体都属于同一名称空间,但您是否可能有其他同名实体(显然是来自其他名称空间)?