Не удалось открыть обязательное приложение /models/proxies/__CG__modelsCountry.php
У меня есть лица Country
а также City
с отношениями OneToMany
от Country
а также ManyToOne
от City
, которые заключаются в следующем:
Country.php
<?php
namespace models;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo,
Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity(repositoryClass="models\repository\CountryRepository")
* @ORM\Table(name="Country")
*
*/
class Country{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
private $name;
/**
* @var datetime $created
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime")
*/
private $created;
/**
* @ORM\OneToMany(targetEntity="models\City",mappedBy="country")
*/
private $cities;
//getters and setters
}
City.php
class City{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="models\Country")
*/
private $country;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
private $name;
//getters and setters
}
Когда я пытаюсь получить город с помощью cityId (скажем, 1),
$city_ = $this->doctrine->em->find('models\City', 1);
ошибка, которую я получаю,
Fatal error: require(): Failed opening required 'application/models/proxies/__CG__modelsCountry.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/MyCIApp/application/third_party/Doctrine/ORM/Proxy/ProxyFactory.php on line 93
Строка № 93 может быть просмотрена на Doctrine2 (GitHub)
НОТА:
1 - мой /etc/php5/apache2/php.ini
является
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
;include_path = ".:/usr/share/php"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
;
; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path
;include_path=".:/usr/share/php/pear"
; The root of the PHP pages, used only if nonempty.
; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
; if you are running php as a CGI under any web server (other than IIS)
; see documentation for security issues. The alternate is to use the
; cgi.force_redirect configuration below
; http://php.net/doc-root
2 - Когда я выбираю сущность, не имеющую отношения с какой-либо другой сущностью, например,
class Sector{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
private $description;
}
это работает хорошо
$sector = $this->doctrine->em->find('models\Sector', 1);
2 ответа
sudo mkdir application/models/proxies
работает отлично. Doctrine
не создавал proxies
папка для меня.
Я получил эту проблему, потому что я пытался загрузить приборы перед запуском:
./vendor/bin/doctrine-module orm:schema-tool:create
Когда я запустил это, мои прокси-классы были сгенерированы, и ошибка исчезла.
Команда doctrine "generate-proxies" вполне могла также решить эту проблему:
./vendor/bin/doctrine-module orm:generate-proxies