2016-06-27 1 views
1

Каталог по умолчанию для моих классов: приложение/Как сделать модели сборки propel с пространствами имен в правильном каталоге?

Композитор автозагрузку конфигурации является:

{ 
    "autoload": { 
     "psr-4": { "App\\": "app/" } 
    } 
} 

На schema.xml PROPEL в мое пространство имен "App\Models"

<database name="default" defaultIdMethod="native" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:noNamespaceSchemaLocation="http://xsd.propelorm.org/1.6/database.xsd" 
      namespace="App\Models" 
     > 
    <table name="user"> 
     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/> 
     <column name="email" type="varchar" size="255" required="true"/> 
     <column name="password" type="varchar" size="60" required="true"/> 
     <column name="country_id" type="integer" required="true"/> 
     <column name="timezone" type="varchar" size="50" required="true"/> 
     <foreign-key foreignTable="country"> 
      <reference local="country_id" foreign="id"/> 
     </foreign-key> 
    </table> 

    <table name="country"> 
     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/> 
     <column name="name" type="varchar" size="128" required="true"/> 
    </table> 
</database> 

Мой propel.php.dist является :

<?php 
return [ 
    'propel' => [ 
     'paths' => [ 
      // The directory where Propel expects to find your `schema.xml` file. 
      'schemaDir' => 'database/schemas', 

      // The directory where Propel should output generated object model classes. 
      'phpDir' => 'app/Models' 
     ] 
    ] 
]; 

Когда я выполняю т.е vendor/bin/propel model:build в результате структура, как это:

/app/ 
|___Models/ 
    |___App/ 
     |___Models/ 
      |___Base/ 
      |___Map/ 
      |___Country.php 
      |___CountryQuery.php 
      |___User.php 
      |___UserQuery.php 

мне нужна структура, чтобы быть похожим на это:

/app/ 
|___Models/ 
    |___Base/ 
    |___Map/ 
    |___Country.php 
    |___CountryQuery.php 
    |___User.php 
    |___UserQuery.php 

Я пробовал все комбинации в данном руководстве: Database Attributes

Есть другой способ подойти к этому?

Заранее спасибо.

ответ

0

Посмотрите на свой файл build.properties.

Вы должны иметь что-то похожее на это:

propel.packageObjectModel    = true 
propel.generator.targetPackage   = App\Models 
0

Вот один подход, который работает в соответствии с просьбой:

composer.json

} 
    "autoload": { 
     "classmap": ["app/"] 
    } 
} 

... говорит композитор классов автозагрузки в этой папке

propel.php.dist

<?php 
return [ 
    'propel' => [ 
     'paths' => [ 
      // The directory where Propel expects to find your `schema.xml` file. 
      'schemaDir' => 'database/schemas', 

      // The directory where Propel should output generated object model classes. 
      'phpDir' => 'app' 
     ] 
    ] 
]; 

... говорит Propel положить ваши классы модели в той же папке (приложение), в которой композитор будет автозагрузку

schema.xml

<database ... namespace="Models"> 
    ... 
</database> 

... говорит Propel использовать Models пространство имен для всех моделей

Затем вы можете использовать любую модель с

use \Models\Country; 
new Country(); 
1

Вы должны changue пространство имен базы данных в вашем schema.xml, вы должны установить пространство имен:

имен = «\ APP \ Models»

+0

Pay в Пенза- "\" - корень пространства имен –

1

Вы хотите установить generator.namespaceAutoPackage к «ложным ». Затем убедитесь, что у вас все еще есть путь .phpDir, установленный в «app/Models» и в файле schema.xml, чтобы ваше пространство имен базы данных находилось в «App \ Models».

http://propelorm.org/documentation/reference/configuration-file.html#generator-settings

Смежные вопросы