d1gi
Новичок
Задача в принципе простая, есть 2 таблицы: Sites и SitesDomain
т.е. один и тотже сайт может откликаться на несколько доменов.
	
	
	
		
Мне нужно получить сайт запросив его домен, например раньше я делал так:
	
	
	
		
Сейчас пытаюсь всё это перевести на ОРМ, создал 2 класса сущностей:
	
	
	
		
	
	
	
		
Далее написал DQL:
	
	
	
		
в ответ получаю ошибку:
	
	
	
		
Читал http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/association-mapping.html
http://odiszapc.ru/doctrine/association-mapping/
http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html
но чувствую, что-то где-то непонял
Скорее всего неправильно определил связи... но крутил уже всяко разно... а может быть и сам DQL неверно составлен кеш симфони очищаю постоянно, в доктрине кеш тоже отключен...
 кеш симфони очищаю постоянно, в доктрине кеш тоже отключен...
Если кто увидел явно ошибку, ткните пальцем плиз?
								т.е. один и тотже сайт может откликаться на несколько доменов.
		SQL:
	
	CREATE TABLE `engine_sites` (
  `site_id` int(11) NOT NULL AUTO_INCREMENT,
  `properties` longtext NOT NULL COMMENT '(DC2Type:array)',
  `create_datetime` datetime NOT NULL,
  PRIMARY KEY (`site_id`)
) ENGINE=InnoDB;
CREATE TABLE `engine_sites_domains` (
  `domain` varchar(255) NOT NULL,
  `site_id` int(11) NOT NULL,
  PRIMARY KEY (`domain`),
  KEY `site_id` (`site_id`)
) ENGINE=InnoDB;
		SQL:
	
	SELECT s.*
FROM engine_sites AS s
JOIN engine_sites_domains AS d ON s.site_id = d.site_id
WHERE d.domain = 'localhost'
		PHP:
	
	<?php
namespace SmartCore\Bundle\EngineBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use SmartCore\Bundle\EngineBundle\Entity\SiteDomains;
/**
 * @ORM\Entity
 * @ORM\Table(name="engine_sites")
 */
class Site
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * 
     * @ORM\OneToMany(targetEntity="SiteDomains", mappedBy="site_id")
     * @ORM\JoinColumn(name="site_id", referencedColumnName="site_id")
     */
    protected $site_id;
    /**
     * @ORM\Column(type="array")
     */
    protected $properties;
    /**
     * @ORM\Column(type="datetime")
     */
    protected $create_datetime;
    
    public function __construct()
    {
        $this->create_datetime = new \DateTime();
        $this->properties = new ArrayCollection();
    }
}
		PHP:
	
	<?php
namespace SmartCore\Bundle\EngineBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use SmartCore\Bundle\EngineBundle\Entity\Site;
/**
 * @ORM\Entity
 * @ORM\Table(name="engine_sites_domains",
 *      indexes={
 *          @ORM\Index(name="site_id", columns={"site_id"})
 *      }
 * )
 */
class SiteDomains
{
    /**
     * @ORM\Id
     * @ORM\Column(type="string")
     */
    protected $domain;
    /**
     * @ORM\Column(type="integer")
     * 
     * @ORM\ManyToOne(targetEntity="Site", inversedBy="site_id")
     * @ORM\JoinColumn(name="site_id", referencedColumnName="site_id")
     */
    protected $site_id;
}
		SQL:
	
	SELECT s
FROM SmartCoreEngineBundle:Site s JOIN s.site_id d
WHERE d.domain = 'localhost'
		Код:
	
	[Semantical Error] line 0, col 71 near 'd
': Error: Class SmartCore\Bundle\EngineBundle\Entity\Site has no association named site_idhttp://odiszapc.ru/doctrine/association-mapping/
http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html
но чувствую, что-то где-то непонял

Скорее всего неправильно определил связи... но крутил уже всяко разно... а может быть и сам DQL неверно составлен
 кеш симфони очищаю постоянно, в доктрине кеш тоже отключен...
 кеш симфони очищаю постоянно, в доктрине кеш тоже отключен...Если кто увидел явно ошибку, ткните пальцем плиз?

 
	            