كيفية جعل مذهب حذف بادئة الجدول من أسماء الصف؟

StackOverflow https://stackoverflow.com/questions/1813420

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا باستخدام عقيدة 1.1.5 وأود أن أعرف إذا كان هناك بعض خيار لإزالة الجدول بادئة من الملفات وأسماء فئة عند استدعاء <م> العقيدة :: generateModelsFromDb أو <م> العقيدة :: generateModelsFromYaml .

وتحرير: على سبيل المثال لدي الجداول مثل mo_article، mo_language، mo_article_text، وما إلى ذلك عندما يولد عقيدة النماذج (باستخدام وظائف من فوق)، وأسماء الطبقة يكون MoArticle، MoLanguage، MoArticleText، ... ولكن أريد لها أن تكون المادة، اللغة ، ArticleText ... هل هناك خيار في تلك الوظائف لتجنب إضافة بادئة الجدول في أسماء فئة النموذج؟

وشكرا

هل كانت مفيدة؟

المحلول

وكان لي نفس هذا السيناريو بالضبط وانتهى كتابة وظيفة بلدي من أجل حلها. هذه الوظيفة يمر عبر ملف YAML بلدي، يقرأ كل اسم الجدول، ويضيف دخول className: المناسب دون بادئة الجدول.

إليك وظيفة:

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);
}

وهنا كيف لي استخدامه:

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

واحد مزيد من ملاحظة - مع هذا الأسلوب لم يكن لديك متسع من مذهب تحويل database_table_name الخاص بك إلى ClassName سهل PHP، ولذلك عليك أن تفعل هذا بنفسك. لقد استخدمت وظيفة strtocamel من هنا .

نصائح أخرى

وأضيف

className: CorrectName

وعلى كل تعريف الجدول كنت بحاجة إلى تغيير في ملف schema.yml الخاص بك. سوف عقيدة تولد كل الملفات مع نمط CorrectName ولكن لا تزال القراءة / الكتابة من جدول محدد مسبقا لديك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top