2013-02-27 22 views
7

Tôi tương đối mới với Symfony2 và cho đến nay thích nó - ngoại trừ vấn đề này mà tôi tiếp tục chống lại.Symfony2 Học thuyết giáo lý: tạo ra: các thực thể không bao giờ hoạt động

Các sợ hãi (cho tôi): doctrine: generate: thực thể

Khi tôi bắt đầu dự án Symfony2 đầu tiên của tôi, tôi không thể nhận được lệnh đó làm việc và kết thúc chỉ sử dụng doctrine: generate: thực thể thay mà làm việc tốt.

Tuy nhiên, lần này tôi đang cố gắng viết một ứng dụng cho một hệ thống đã có bảng cơ sở dữ liệu. Tôi làm theo các hướng dẫn tại: Symfony2 Docs mà dường như tất cả các công việc tốt ngoại trừ, như thường lệ cho giáo lý: generate: bit thực thể.

Tôi có tập tin Entity sau @ My/Bundle/FeedManagerBundle/Entity/Feeds.php

<?php 

namespace My\Bundle\FeedManagerBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Feeds 
* 
* @ORM\Table(name="feeds") 
* @ORM\Entity 
*/ 
class Feeds 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="feed_label", type="string", length=100, nullable=false) 
    */ 
    private $feedLabel; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="advertiser_id", type="integer", nullable=false) 
    */ 
    private $advertiserId; 

    /** 
    * @var boolean 
    * 
    * @ORM\Column(name="active", type="boolean", nullable=false) 
    */ 
    private $active; 


} 

Và trong My/Bundle/FeedManagerBundle/Resources/config/doctrine/Feeds.orm.yml

Feeds: 
    type: entity 
    table: feeds 
    fields: 
    id: 
     id: true 
     type: integer 
     unsigned: false 
     nullable: false 
     generator: 
      strategy: IDENTITY 
    feedLabel: 
     type: string 
     length: 100 
     fixed: false 
     nullable: false 
     column: feed_label 
    advertiserId: 
     type: integer 
     unsigned: false 
     nullable: false 
     column: advertiser_id 
    active: 
     type: boolean 
     nullable: false 
    lifecycleCallbacks: { } 

Và đây là lỗi tôi nhận:

$ php app/console doctrine:generate:entities My/Bundle/FeedManagerBundle/Entity/Feeds --path=src 
Generating entity "My\Bundle\FeedManagerBundle\Entity\Feeds" 



    [Doctrine\Common\Persistence\Mapping\MappingException]                   
    Invalid mapping file 'My.Bundle.FeedManagerBundle.Entity.Feeds.orm.yml' for class 'My\Bundle\FeedManagerBundle\Entity\Feeds'. 



doctrine:generate:entities [--path="..."] [--no-backup] name 

tôi đã cố gắng thay đổi tên của tập tin yml để con đường đầy đủ. Tôi cũng đã thử thay đổi dòng đầu tiên của tệp yml thành đường dẫn đầy đủ và tôi đã thử làm cả hai thứ đó cùng một lúc. Không có gì dường như làm việc & bây giờ tôi đang nhận được để kéo tóc của tôi ra sân khấu. Bất cứ ai có thể nghĩ ra bất kỳ lý do tại sao điều này có thể không hoạt động?

Trả lời

13

Thay đổi Feed.orm.yml tới:

My\Bundle\FeedManagerBundle\Entity\Feeds: 
    type: entity 
    table: feeds 
    ... 
+0

Wow - Tôi đã thử mọi thứ nhưng điều đó. Tôi thậm chí đã thử My/Bundle/FeedManagerBundle/Entity/Feeds: THANKS! – someuser

+0

@ l_t vui mừng rằng vấn đề được giải quyết – seferov

+0

Tương tự ở đây với ánh xạ tệp XML của tôi. Tôi đã có và nó đã đưa ra cùng một lỗi. Tôi đã đổi thành và nó hoạt động. Cảm ơn! – a4bike

1

Tôi đã có một vấn đề tương tự, nhưng vấn đề là không có.

Trong thực tế, tôi muốn thay đổi tên của thực thể, ví dụ: My \ Bundle \ FeedManagerBundle \ Entity \ Aircaft: sẽ là của tôi \ Bundle \ FeedManagerBundle \ Entity \ Máy bay:

(vì bảng là "aircaft": -S)

nhưng tôi không thay đổi tên tệp. khi tôi thay đổi aircaft.orm.yml đến airc r aft.orm.yml (với "r") lệnh hoạt động !!

0

Tôi đã giải quyết vấn đề này theo cách khác. orm.yml tệp của thực thể Nguồn cấp dữ liệu đang tạo sự cố, vì vậy tôi đã xóa nó khỏi resource -> config -> doctrine sau đó tôi chạy ứng dụng/giao diện điều khiển php doctrine:generate:entities YourBundleName.

Tác phẩm này.

Nếu bạn muốn chuyển đổi thông tin ánh xạ sang các định dạng bản đồ được hỗ trợ khác bằng cách sử dụng tác vụ doctrine:mapping:convert. Thay thế không gian tên dưới đây bằng của riêng bạn. Nó hoạt động 100%.

php app/console doctrine:mapping:convert --namespace="Blogger\BlogBundle\Entity\Blog" yaml src/Blogger/BlogBundle/Resources/config/doctrine 
1

trả lời phát hiện không có được sau khi tìm kiếm 5 giờ ...

Để Tạo thực thể từ yml để model.php, chỉ cần làm điều này. Tập trung vào văn bản in đậm bên dưới. Lệnh là:

php app/console doctrine:generate:entities YourAppBundle:ReplaceWithEntityName --path src/ 

đảm bảo tệp model.orm.yml của bạn nằm trong thư mục của bạn

C: \ xyz \ abc ** AppBundle \ Resources \ config \ thuyết ** và tập tin của bạn có yml tham chiếu này trong dấu ngoặc kép được thêm vào đầu mã bản đồ "AppBundle \ Entity \ Sách:"

Các vấn đề liên quan