Frage

Ich verwende Lehre 1.1.5 und ich würde gerne wissen, ob es irgendeine Option für remove Tabellenpräfix von Dateien und Klassennamen ist beim Aufruf von Lehre :: generateModelsFromDb oder Lehre :: generateModelsFromYaml .

Edit: Zum Beispiel habe ich Tabellen wie mo_article, mo_language, mo_article_text usw. Wenn Lehre die Modelle erzeugt (mit den Funktionen von oben), werden die Klassennamen MoArticle, MoLanguage, MoArticleText, ... aber ich möchte, dass sie Artikel sein, Sprache , ArticleText ... gibt es in diesen Funktionen einig Option Hinzufügen Tabellenpräfixe in Modellklassennamen zu vermeiden?

Danke

War es hilfreich?

Lösung

hatte ich genau dieses gleiche Szenario und am Ende meine eigene Funktion zu schreiben, es zu lösen. Diese Funktion geht durch meine YAML-Datei, liest jeden Tabellennamen und fügt den entsprechenden Eintrag className: ohne Tabellen-Präfix.

Hier ist die Funktion:

const TABLE_PFX = 'tableName:';
const CLASS_PFX = 'className:';

function AddClassNames($yamlPath) {

  $tempFilePath = $yamlPath . '.old';
  rename($yamlPath, $tempFilePath);
  $tempFile = fopen($tempFilePath, 'r');
  $yamlFile = fopen($yamlPath, 'w');

  while (!feof($tempFile)) {
      $line = fgets($tempFile);
      fwrite($yamlFile, $line);
      if ($index = strpos($line, TABLE_PFX)) {
          $tableName = trim(substr($line, $index + strlen(TABLE_PFX) + 1));
          $className = substr($tableName, 4);
          $className = strtocamel($className);
          $classLine = str_replace(TABLE_PFX, CLASS_PFX, $line);
          $classLine = str_replace($tableName, $className, $classLine);
          fwrite($yamlFile, $classLine);
      }
  }
  fclose($tempFile);
  fclose($yamlFile);
  unlink($tempFilePath);
}

Und hier ist, wie ich es verwenden:

Doctrine_Core::generateYamlFromDb($yamlPath);
AddClassNames($yamlPath);
Doctrine_Core::generateModelsFromYaml($yamlPath, 'models',
    array('doctrine'), 
    array('generateTableClasses' => true,));

Ein weiterer Hinweis - mit dieser Methode haben Sie nicht den Luxus der Lehre Ihre database_table_name auf den PHP-freundlichen ClassName konvertieren, so dass Sie dies selbst tun. Ich benutzte die strtocamel Funktion von hier .

Andere Tipps

Fügen Sie einfach

className: CorrectName

zu jeder Tabellendefinition Sie müssen in Ihrer schema.yml Datei ändern. Lehre werden alle Dateien mit der CorrectName Muster erzeugen, aber immer noch Lesen / Schreiben von Ihrem gelegten Tabelle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top