PHP Doktrini hayal kırıklığı: yükleme modelleri çalışmıyor ..?

2 Cevap php

Neredeyse ben gerçekten birisi bana yardımcı olabilir umut, onu kaybediyorum!

Ben CodeIgniter ile Doctrine kullanıyorum. Her şey doğru kurulum ve ben sınıfları oluşturmak ve web sitesi görüntülemek kadar çalışıyor.

Ölümcül hata: Class 'BaseObjecten' / var / www / vhosts / domain.com / uygulama / modelleri / Objecten.php bulunmayan on line 13

Ben (CodeIgniter eklenti olarak) aşağıdaki önyükleyicisini kullanıyorum:

<?php
// system/application/plugins/doctrine_pi.php

// load Doctrine library
require_once BASEPATH . '/plugins/Doctrine/lib/Doctrine.php';

// load database configuration from CodeIgniter
require_once APPPATH.'/config/database.php';

// this will allow Doctrine to load Model classes automatically
spl_autoload_register(array('Doctrine', 'autoload'));

// we load our database connections into Doctrine_Manager
// this loop allows us to use multiple connections later on
foreach ($db as $connection_name => $db_values) {

    // first we must convert to dsn format
    $dsn = $db[$connection_name]['dbdriver'] .
        '://' . $db[$connection_name]['username'] .
        ':' . $db[$connection_name]['password'].
        '@' . $db[$connection_name]['hostname'] .
        '/' . $db[$connection_name]['database'];

    Doctrine_Manager::connection($dsn,$connection_name);
}

// CodeIgniter's Model class needs to be loaded
require_once BASEPATH.'/libraries/Model.php';

// telling Doctrine where our models are located
Doctrine::loadModels(APPPATH.'/models');

// (OPTIONAL) CONFIGURATION BELOW

// this will allow us to use "mutators"
Doctrine_Manager::getInstance()->setAttribute(
    Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);

// this sets all table columns to notnull and unsigned (for ints) by default
Doctrine_Manager::getInstance()->setAttribute(
    Doctrine::ATTR_DEFAULT_COLUMN_OPTIONS,
    array('notnull' => true, 'unsigned' => true));

// set the default primary key to be named 'id', integer, 4 bytes
Doctrine_Manager::getInstance()->setAttribute(
    Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,
    array('name' => 'id', 'type' => 'integer', 'length' => 4));
?>

Anyone?

P.S. Ben de hemen sonra aşağıdaki / / (isteğe bağlı yapılandırma) ekleyerek denedim

Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE);
spl_autoload_register(array('Doctrine', 'modelsAutoload'));

2 Cevap

Denediniz mi?

<?php

spl_autoload_register(array('Doctrine', 'autoload'));
spl_autoload_register(array('Doctrine', 'modelsAutoload'));
$manager = Doctrine_Manager::getInstance();

$manager->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE);
$manager->setAttribute(Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true);
$manager->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true);
Doctrine::loadModels(APPPATH.'models');

Ayrıca, sunucu platformu bağlı olarak, XDebug ve canlı kırılma noktalarını destekleyen bir IDE kullanarak kontrol etmek isteyebilirsiniz. Bu kombinasyon, bir bağımlılık sorunu var classdef ilk satırda bir kesme noktası ayarlayarak nispeten hızlı bir şekilde en autoloader sorunları aşağı izlemenize olanak sağlar.

Sadece küçük bir hack

Bu satırı ekle

Doctrine::loadModels(APPPATH.'/models/generated');

önce ...

Doctrine::loadModels(APPPATH.'/models');

or other path where you think your autoGenerated BaseClasses are in application/helper/doctrine_pi.php