5
votes

I'm tryng from several days to setup and use Propel now 2.0. PHP version is 5.4.4-14+deb7u5

What I have done:

0) Fresh LAMP with a folder "test" in /var/www

1) Composer.json with

{
    "require": {
        "propel/propel": "2.0.*@dev"
    }
}

(also tried with the alpha indicated in home page, no success, download but i cannot use)

2) It download all necessary files.

3) I can launch "vendor/bin/propel" and it exit after some green text.

4) I create the schema.xml with foreign keys indicated in http://propelorm.org/documentation/02-buildtime.html

5) I set up buildtime.cconfiguration

6) I can create the sql:build and the model:build (I find the bookstore.sql in generated-sql and the classes in generated-classes)

7) I CANNOT insert the sql. I launch sql:insert, no error at screen but no insert in database (connection/password is okay, double checked).

8) I load myself SQL in database.

9) I create an index.php with this:

<?php
// setup the autoloading
require_once 'vendor/autoload.php';
use Propel\Runtime\Propel;
use Propel\Runtime\Connection\ConnectionManagerSingle;
$serviceContainer = Propel::getServiceContainer();
$serviceContainer->setAdapterClass('bookstore', 'mysql');
$manager = new ConnectionManagerSingle();
$manager->setConfiguration(array (
  'dsn'      => 'mysql:host=localhost;dbname=my_db_name',
  'user'     => 'my_db_user',
  'password' => 's3cr3t',
));
$serviceContainer->setConnectionManager('bookstore', $manager);

echo 'All ok, for now...';

$author = new Author();
$author->setFirstName('Jane');
$author->setLastName('Austen');
$author->save();

/* /end of php file */ 

The echo is printed normally but next row script exit with error 500 and in Apache log I read "Class author not found".

Is there some other config to adjust other than indicate in the guide?

4
I think you might be missing Propel initialisation. See the section from the link to provided that mentions require_once '/generated-conf/config.php'.halfer
Oh thank you... But i've abandoned the idea to use propel and i did swap to f3 framework with his integrated orm.... But thank you very much!sineverba
@halfer i did not understand...sineverba
I'll delete my confusing comments :). Here's what I've done: if a question is highly localised, we tend to put them on hold here. This is because we want questions that will be of use to a wide audience and not to just one person. Whilst this is a good question, if someone now answers it, we'll not know if it is correct, since you've moved on to a different framework and won't be able to test. Old on-hold questions are sometimes deleted, just to keep the site neat and tidy - but this will only be put on hold if it gets enough hold votes. It just has one at the moment.halfer
OH.... ok.... if you want / think that is correct, i'll delete the answer....sineverba

4 Answers

7
votes

I resolved a similar situation by adding this to my composer.json and then running install again.

 "autoload": { 
      "classmap": ["generated-classes/"] 
 } 
2
votes

I had this error too. Apparently the problem was with the autoload configuration and running a php composer.phar dump-autoload command fixed it.

php composer.phar dump-autoload
1
votes

If you want to solve this problem you should combine jerrygarcuih's and Abaobi Orajiaku's awnsers. Thank you guys.

Add the models folder to the composer.json

 "autoload": { 
      "classmap": ["generated-classes/"] 
 } 

Then run composer 'dump-autoload'.

All generated classes should be in the same namespace.

1
votes

I had a similiar issue. And i solved it by including the exact path to the classmaps.

"autoload": {
    "classmap": [
        "path/to/generated-classes/",
        "path/to/generated-classes/Base/",
        "path/to/generated-classes/Map/"
    ]
}