Symfony2:加入表只需要一个id

时间:2015-01-19 16:39:21

标签: symfony doctrine

我在Synfony2中有两个联合表:“查询”和“结果”。表查询保存用户的研究和表结果保存研究结果。我想在表格结果中设置相应的研究ID,但是现在当我将数据设置为结果时,它会在查询中创建很多行(并且不要只采用相应的id)。 这是我的代码更具有说服力:

我的实体查询:

class Query
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string\NotBlank()
     *
     * @ORM\Column(name="query", type="string", length=255)
     */
    private $query;

我的实体结果:

class Result
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255)
     */
    private $title;

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

    /**
     * @var string
     *
     * @ORM\Column(name="url", type="string", length=255)
     */
    private $url;

    /**
     * @var string
     *
     * @ORM\Column(name="website", type="string", length=100)
     */
    private $website;

    /**
     * @var integer
     *
     * @ORM\OneToOne(targetEntity="Biblishare\BiblishareBundle\Entity\Query", cascade={"persist"})
     * @ORM\JoinColumn(nullable=false)
     */
    private $query;

我的控制员:

$html7 = $this->container->get('simple_html_dom');
        $html7->load($result7);

        // Create DOM from String
         $html7 = str_get_html($result7);
        // Find all article blocks
         foreach($html7->find('.result-item-metadata') as $article7) {
         if(isset($article7->find('.rw a', 0)  ->plaintext))
         {
            $item7['title'] = $article7->find('.rw a', 0)  ->plaintext;
        }
        elseif(isset($article7->find('.title a', 0)  ->plaintext))
        {
            $item7['title'] = $article7->find('.title a', 0)  ->plaintext;
        }
        else
        {
        }

         if(isset($article7->find('.contrib a', 0)  ->plaintext)) 
         {
            $item7['auteur'] = $article7->find('.contrib a', 0)  ->plaintext;
         }
         else
         {
            $item7['auteur'] = '';
         }

         if(isset($article7->find('.rw a', 0)  ->href)) 
         {
            $item7['url']     = 'http://www.jstor.org' . $article7->find('.rw a', 0)  ->href;
         }
         elseif(isset($article7->find('.title a', 0)  ->href)) 
         {
            $item7['url']     = 'http://www.jstor.org' . $article7->find('.title a', 0)  ->href;
         }
         else
         {
            $item7['url'] = '';
         }

         $resultat7[] = '<div class="float_checkbox"><input class="result_scrap" type="checkbox" name="choix[]" value="<a href=\''.$item7['url'].'\' class=\'result_title\' target=\'_blank\'>' . $item7['title'] . '</a></span></br><span class=\'result_author\'> ' . $item7['auteur'] .'</span>" /><span></span></div><label for="choix">' . '<a href="'.$item7['url'].'" class="result_title" target="_blank">' . $item7['title'] . '</a></span></br><span class="result_author">' . ' ' . $item7['auteur'] .'</span></label>';

         $result->setTitle($item7['title']);
         $result->setAuthor($item7['auteur']);
         $result->setUrl($item7['url']);
         $result->setWebsite('jstor');
         $result->setQuery($query);
         $em->persist($result);
         $em->flush();
         $em->clear();
        }

非常感谢

0 个答案:

没有答案