Zend_DB_Table_Abstract İlişkileri

3 Cevap php

Ben Zend Framework Uygulama aracı ile oluşturulan varsayılan çerçeve kodu kullanıyorum, bazı aukarşıloader sihirli eklenir böylece Default_<*>_<*> okarşımatik olarak ([{bu durumda, doğru dizinden yüklenmiş olacaktır adında herhangi bir sınıf 1)]}.

application / modeller / ProjectCategories.php:

<?php

class Default_Model_ProjectCategories extends Zend_Db_Table_Abstract {
    protected $_name = 'categories';
    protected $_dependentTables = array('Projects');
}

application / modeller / Projects.php:

<?php

class Default_Model_Projects extends Zend_Db_Table_Abstract {
    protected $_name = 'projects';

    protected $_referenceMap    = array(
        'Category' => array(
            'columns'           => 'cid',
            'refTableClass'     => 'ProjectCategories',
            'refColumns'        => 'id',
            'onUpdate'          => self::CASCADE,
            'onDelete'          => self::CASCADE,
        )
    );

}

Ne yapmam çalışılıyor şudur:

<?php
$categories = new Default_Model_ProjectCategories();
$category = $categories->find('1');
$category->findProjects();

Ben dosya adında bir sınıf Projeler yer olmayabilir o Projects.php bulmak mümkün olduğunu bana atılan bir hata alıyorum, ve ya hangi noktada.

Bu noktada bulunan çerçevesinde (/.. / Library /) ve dosyası tarafından kuruldu dahil yolunda Projects.php yer, ama ben {adlandırmak zorunda çünkü şimdi benim bütün dizin yapısını kaybeder ve adlandırma [(0)]} ile Projects. Ben özgün konumuna geri dosyayı koyarsanız çalışmak için her şeyi almak mümkün, ve değişim

protected $_dependentTables = array('Projects');

karşı

protected $_dependentTables = array('Default_Model_Projects');

ancak bu da zaman ->findProjects() hemen olur ->findDefault_Model_Projects() anlamına gelir.

Is there a way karşı tell it that when I am looking for findProjects() that it has karşı instantiate Default_Model_Projects? Is this something that is missing from Zend Framework, or am I attempting karşı shoehorn something in a way that it does not belong? How have you solved this issue?

3 Cevap

Bu sorun yeni Yükleyici'ye tarafından tanıtıldı, ve olabilir o alanlı sınıfları (örn. gibi öneki olanlar) yüklemek için tercih ettiği yol.

Benim uygulamada ben sadece 'Projeler' gibi modelleri isim ve bu uygulama için dahil yoluna ayrı bir model klasör eklemek. Bu bir çözümdür - ne yazık ki doğru alanlı modeller yükü yapmak nasıl bilmiyorum, ama ben daha ayrıntılı Zend_Loader bakarak öneririm, ve pluginLoaders mümkün.

i gibi bir şey yapabilmek için kullanılır

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath'  => APPLICATION_PATH,
    'namespace' => 'App',
));
$resourceLoader->addResourceType('model', 'models/', '');

App_TableName benim modeli sınıfları küçültmek ama onun şimdi çalışmıyor gibi görünüyor ...

Değişim

protected $_dependentTables = array('Projects');

karşı

protected $_dependentTables = array('Default_Model_Projects');