Lehre Fatal Error - Unknown Bezug alias
Erhalte ich folgende Fehlermeldung:
Doctrine_Table_Exception: Unbekannt Bezug alias shoesTable in /home/public_html/projects/giftshoes/system/database/doctrine/Doctrine/Relation/Parser.php auf der Linie 237
Ich bin mit Lehre 1.2.2 mit Codeigniter
Mein Code ist unten: (BaseShoes.php und Shoes.php wird auto-generiert)
------------BaseShoes------------
<?php
//Connection Component Binding
Doctrine_Manager::getInstance()->bindComponent('Shoes', 'sadiqsof_giftshoes');
/**
* BaseShoes
*
* This class has been auto-generated by the Doctrine ORM Framework
*
* @property integer $sku
* @property string $name
* @property string $keywords
* @property string $description
* @property string $manufacturer
* @property float $sale_price
* @property float $price
* @property string $url
* @property string $image
* @property string $category
* @property Doctrine_Collection $Viewes
*
* @package ##PACKAGE##
* @subpackage ##SUBPACKAGE##
* @author ##NAME## <##EMAIL##>
* @version SVN: $Id: Builder.php 6820 2009-11-30 17:27:49Z jwage $
*/
abstract class BaseShoes extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('shoes');
$this->hasColumn('sku', 'integer', 4, array(
'type' => 'integer',
'fixed' => 0,
'unsigned' => false,
'primary' => true,
'autoincrement' => false,
'length' => '4',
));
$this->hasColumn('name', 'string', 255, array(
'type' => 'string',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '255',
));
$this->hasColumn('keywords', 'string', 255, array(
'type' => 'string',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '255',
));
$this->hasColumn('description', 'string', null, array(
'type' => 'string',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '',
));
$this->hasColumn('manufacturer', 'string', 20, array(
'type' => 'string',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '20',
));
$this->hasColumn('sale_price', 'float', null, array(
'type' => 'float',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '',
));
$this->hasColumn('price', 'float', null, array(
'type' => 'float',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '',
));
$this->hasColumn('url', 'string', null, array(
'type' => 'string',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '',
));
$this->hasColumn('image', 'string', null, array(
'type' => 'string',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '',
));
$this->hasColumn('category', 'string', 50, array(
'type' => 'string',
'fixed' => 0,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
'length' => '50',
));
}
public function setUp()
{
parent::setUp();
$this->hasMany('Viewes', array(
'local' => 'sku',
'foreign' => 'sku'));
}
}
--------------ShoesTable--------
<?php
class ShoesTable extends Doctrine_Table
{
function getAllShoes($from = 0, $total = 15)
{
$q = Doctrine_Query::create()
->from('Shoes')
->limit($total)
->offset($from);
return $q->execute(array(), Doctrine::HYDRATE_ARRAY);
}
}
---------------Schuhe Modell-----------------
<?php
/**
* Shoes
*
* This class has been auto-generated by the Doctrine ORM Framework
*
* @package ##PACKAGE##
* @subpackage ##SUBPACKAGE##
* @author ##NAME## <##EMAIL##>
* @version SVN: $Id: Builder.php 6820 2009-11-30 17:27:49Z jwage $
*/
class Shoes extends BaseShoes
{
function __construct() {
parent::__construct();
$this->shoesTable = Doctrine::getTable('Shoes');
}
function getAllShoes()
{
return $this->shoesTable->getAllShoes();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jemand anderes auf der Suche nach Antworten stieß ich auf diese Fehlermeldung, denn ich hatte
Statt
Das Verhältnis muss in Bezug zum Modell aufgeführt, in der von()
Nicht sicher, warum man diesen speziellen Fehler, aber die Beurteilung von Lehre, Benutzerhandbuch, sollten Sie sich nicht definieren, die
__construct()
Methode in IhrerShoes
Klasse (erweitertBaseShoes
, die selbst erstreckt sichDoctrine_Record
)Hier ist der Abschnitt der Lehre ist das Handbuch, das sagt nur dieses : Überschreiben Sie den Konstruktor (zitieren) :
(Ich habe nicht copy-paste alles : es gibt mehr interessante Sachen gibt 😉 )
Haben Sie nicht definiert $shoesTable als eine Eigenschaft in die Schuhe-Objekt. Fügen Sie es wie folgt:
Wenn Sie nicht, es nicht existiert, und darauf verweisen, nennen die __get() die Magische Methode, die Lehre bietet. Die Lehre wird davon ausgegangen, dass shoesTable ist Teil des Datenmodells und Aussehen für eine Beziehung (da es keine lokalen Daten) mit diesem Namen.
Einen anderen, einfacheren Weg, es zu tun, ist die Verwendung der eingebauten get erreichbar ist () - Methode:
Entfernen der Konstruktor ohne etwas zu tun mit dem code, den Sie entfernt haben wird wahrscheinlich nicht helfen.
Ich bin neu in der Lehre, aber ich hatte den gleichen Fehler vor kurzem (ich glaube aus verschiedenen Gründen). Ich Frage mich, ob das class-Attribut $this->shoesTable ist getroffen, um eine auswärtige Beziehung, das wäre eine Erklärung für die Fehlermeldung. In jedem Fall werden Sie wahrscheinlich nicht wollen, um eine Tabelle-Methode in einer Zeile Klasse, so würde ich geneigt sein, dies zu tun:
Ich weiß, es ist unwahrscheinlich, dass Sie sind immer noch auf diesem, aber wenn Sie möchten weiterhin den Dialog, stellen Sie Ihre aufrufenden code.