Ich arbeite mit Zend und Doctrine2 und ich musste einige Cronjobs mit der gleichen Struktur erstellen. Das Problem ist, wenn ich versuchte, das Repository von einem Model mit Beziehung zu einem anderen Model zu bekommen, bekam ich einen Fehler (nur in der Befehlszeile, in der Website funktioniert gut, wenn ich das gleiche mache).Zend & Doctrine2: Fehler mit Proxies von Kommandozeilen-Skripten
Dies ist der Fehler, den ich in der Befehlszeile erhalten:
Fatal error: Class 'Proxy \ Model_MediaPresetsProxy' nicht in c gefunden: \ php \ library \ Lehre \ ORM \ Proxy \ ProxyFactory.php auf 92 Linie
ich habe die Proxys in diesem Ordner /application/models/Proxies/ und die Datei Model_MediaPresetsProxy in diesem Verzeichnis
<?php
namespace Proxy;
/**
* THIS CLASS WAS GENERATED BY THE DOCTRINE ORM. DO NOT EDIT THIS FILE.
*/
class Model_MediaPresetsProxy extends \Model_MediaPresets implements \Doctrine\ORM\Proxy\Proxy
{
[...]
Hier ist das, was Ich habe für die crons
/crons/init.php
<?php
$time = microtime(true);
$memory = memory_get_usage();
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', 'cldev');
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
defined('NL')
|| define('NL', "\n");
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
// set bootstrap param
$bootstrap = $application->getBootstrap();
$front = $bootstrap->getResource('FrontController');
$front->setParam('bootstrap', $bootstrap);
register_shutdown_function('__shutdown');
function __shutdown()
{
global $time, $memory;
$endTime = microtime(true);
$endMemory = memory_get_usage();
echo '
Time [' . ($endTime - $time) . '] Memory [' . number_format(($endMemory - $memory)/1024) . 'Kb]
';
}
und dann habe ich meine cronjob, dass alles zu testen, arbeitete
/crons/queue/Process. php
<?php
require realpath(dirname(__FILE__) . '/../init.php');
$paths = Helper_Media::getPaths();
$magick = new App_PhMagick();
$em = Zend_Registry::getInstance()->entityManager;
$queue = $em->getRepository('Model_MediaQueue')->findAll();
echo 'Items in the queue: ' . count($queue) . NL;
Und dies sind die Modelle, die ich für diese
bin mit/application/models/MediaQueue.php
<?php
use Doctrine\Common\Collections\ArrayCollection;
/**
* @Entity
* @Table(name="media_queue")
*/
class Model_MediaQueue
{
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
private $queue_id;
/**
* @ManyToOne(targetEntity="Model_MediaPresets")
* @JoinColumn(name="queue_preset_id", referencedColumnName="preset_id")
*/
private $media_preset;
/**
* @ManyToOne(targetEntity="Model_Sites", inversedBy="media_list")
* @JoinColumn(name="queue_site_id", referencedColumnName="site_id")
*/
private $media_site;
/**
* @Column(type="string")
*/
private $source_media_file;
/** @Column(type="integer") */
private $result_media_id;
/** @Column(type="integer") */
private $queue_status;
/** @Column(type="integer") */
private $queue_added;
/** @Column(type="integer") */
private $queue_processed;
public function __construct()
{
$this->media_preset = new \Doctrine\Common\Collections\ArrayCollection();
$this->media_site = new \Doctrine\Common\Collections\ArrayCollection();
}
[...]
}
/application/models/MediaPresets.php
<?php
/**
* @Entity
* @Table(name="media_presets")
*/
class Model_MediaPresets
{
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
private $preset_id;
/**
* @Column(name="preset_type", type="string", columnDefinition="enum('video', 'photo')")
*/
private $preset_type;
/** @Column(type="string") */
private $preset_name;
/** @Column(type="string") */
private $preset_formats_order;
/** @Column(type="integer") */
private $preset_size_w;
/** @Column(type="integer") */
private $preset_size_h;
/**
* @Column(name="preset_resize_method", type="string", columnDefinition="enum('Maintain', 'Stretch', 'Centre', 'Abort')")
*/
private $preset_resize_method;
/** @Column(type="string") */
private $preset_watermark;
/** @Column(type="string") */
private $preset_background;
}
irgendwelche Hinweise?
Vielen Dank :)
In Model_MediaQueue importieren Sie ArrayCollection, aber immer noch die FQN im Konstruktor: P – Cobby
hehe .. Danke .. das war mein erstes Modell und ich habe nicht bemerkt, dass die Linie immer noch da war.:) – SERPRO