2013-10-02 51 views
1

由於第6行的/var/www/test/product-create.php中沒有找到「Class」產品,因此我正在進入Doctrine的入門指南, :學說實體「未找到類」

<?php 
require_once 'bootstrap.php'; 

$newProductName = $argv[1]; 

>>>>> $product = new Product(); 
$product->setName($newProductName); 

$entityManager->persist($product); 
$entityManager->flush(); 

echo sprintf('Created Product with ID %d' . PHP_EOL, $product->getId()); 

正如在指南中寫的,我在我的項目中的「./src」目錄下有Product類。

請幫助我,因爲我想在沒有Symfony的情況下開始使用Doctrine,我不能再進一步移動。

這裏是我的bootstrap.php:

<?php 
use Doctrine\ORM\Tools\Setup; 
use Doctrine\ORM\EntityManager; 

use Symfony\Component\Yaml\Parser; 

require 'vendor/autoload.php'; 

$yaml = new Parser(); 

$parameters = $yaml->parse(file_get_contents(__DIR__ . '/parameters.yml')); 
$parameters = $parameters['parameters']; 

$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__ . '/src'), $parameters['debug']); 

$conn = array 
    (
     'host'  => $parameters['database_host'], 
     'port'  => $parameters['database_port'], 
     'driver' => $parameters['database_driver'], 
     'user'  => $parameters['database_user'], 
     'password' => $parameters['database_password'], 
     'dbname' => $parameters['database_name'] 
    ); 

$entityManager = EntityManager::create($conn, $config); 

這是我Product.php:

<?php 
/** 
* @Entity 
* @Table (name="products") 
**/ 
class Product 
{ 
    /** 
    * @Id 
    * @Column(type="integer") @GeneratedValue 
    **/ 
    protected $id; 

    /** 
    * @Column(type="string") 
    **/ 
    protected $name; 

    public function getId() 
    { 
     return $this->id; 
    } 

    public function getName() 
    { 
     return $this->name; 
    } 

    public function setName($name) 
    { 
     $this->name = $name; 
    } 
} 

謝謝大家提前!

回答

4

我沒有看到你包括產品類。您需要在您的文件頂部寫入

require_once'patch_to_your_class/Product.php';

或者使用自動加載器進行分類。

+0

塞爾,你超完美!但是我不明白,爲什麼教義維護者沒有在他們的文檔中包含這些內容?謝謝你的提示! –

2

我只是碰到你的問題就來了,現在,希望你找到一個答案,而是要幫助別人,你需要確保你包括在你composer.json以下

"autoload": { 
    "psr-0": {"": "src/"} 
} 

或手動包括它就像@СергейСтуденикин建議