来自composer.json
{
"name": "symfony/website-skeleton",
"type": "project",
"license": "MIT",
"description": "A skeleton to start a new Symfony website",
"require": {
"php": "^7.1.3",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.1",
"symfony/apache-pack": "^1.0",
"symfony/asset": "^4.0",
"symfony/console": "^4.0",
"symfony/expression-language": "^4.0",
"symfony/flex": "^1.0",
"symfony/form": "^4.0",
"symfony/framework-bundle": "^4.0",
"symfony/lts": "^4@dev",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "^1.0",
"symfony/process": "^4.0",
"symfony/security-bundle": "^4.0",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/translation": "^4.0",
"symfony/twig-bundle": "^4.0",
"symfony/validator": "^4.0",
"symfony/web-link": "^4.0",
"symfony/webpack-encore-pack": "*",
"symfony/yaml": "^4.0"
},
"require-dev": {
"symfony/browser-kit": "^4.0",
"symfony/css-selector": "^4.0",
"symfony/debug-pack": "*",
"symfony/dotenv": "^4.0",
"symfony/maker-bundle": "^1.5",
"symfony/phpunit-bridge": "^4.0",
"symfony/profiler-pack": "*",
"symfony/web-server-bundle": "^4.0"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false
}
}
}
# /config/packages/doctrine.yaml
doctrine:
dbal:
default_connection: training
connections:
training:
dbname: "training"
driver: "pdo_mysql"
host: "localhost"
port: "3306"
user: "userdb"
password: "XXXXXXXXXX"
charset: UTF8
mapping_types:
bit: boolean
orm:
auto_generate_proxy_classes: "%kernel.debug%"
default_entity_manager: training
entity_managers:
training:
connection: training
auto_mapping: true
命令:
php bin/console doctrine:mapping:import --em=training App\Entity annotation --path=src/Entity
生成src/Entity
Course.php
实体:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Course
*
* @ORM\Table(name="course", indexes={@ORM\Index(name="id_product_idx_1", columns={"id_product"}), @ORM\Index(name="enabled_idx_1", columns={"enabled"}), @ORM\Index(name="sort_idx_1", columns={"sort"})})
* @ORM\Entity
*/
class Course
{
....
进入控制台后:
php bin/console make:entity --regenerate App
这失败并出现错误:
在&#34; App&#34;中没有找到任何实体。命名空间
同样适用于
php bin/console make:entity --regenerate App\Entity
如果我尝试
php bin/console make:entity --regenerate App\Entity\Course
输出
无法找到&#34; App \ Entity \ Course&#34;的Doctrine元数据。它是否被映射为实体?
我做错了什么?
答案 0 :(得分:1)
查看def writePostsToSql():
con = sqlite3.connect("database.db")
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS posts (Id, PostTypeId, AcceptedAnswerId, Date, Time, Score, ViewCount, Body, OwnerUserId, Title, Tags, AnswerCount, FavoriteCount, PRIMARY KEY (Id), FOREIGN KEY (AcceptedAnswerId), FOREIGN KEY (OwnerUserId));") # use your column names here
with open('Posts.csv', 'r') as fin:
dr = csv.DictReader(fin) # comma is default delimiter
to_db = [(i['Id'], i['PostTypeId'], i['AcceptedAnswerId'], i['Date'], i['Time'], i['Score'], i['ViewCount'], i['Body'], i['OwnerUserId'], i['Title'], i['Tags'], i['AnswerCount'], i['FavoriteCount']) for i in dr]
cur.executemany("INSERT INTO posts (Id, PostTypeId, AcceptedAnswerId, Date, Time, Score, ViewCount, Body, OwnerUserId, Title, Tags, AnswerCount, FavoriteCount) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);", to_db)
con.commit()
con.close()
config/packages/doctrine.yaml
这就是问题所在。每个.orm.yml都在那条路上搜索。
答案 1 :(得分:1)
在app/config/packages/doctrine.yaml
内
...
doctrine:
...
orm:
default_entity_manager: default
auto_generate_proxy_classes: '%kernel.debug%'
entity_managers:
default:
naming_strategy: doctrine.orm.naming_strategy.underscore
connection: default
#ADD THESE LINES AND CHANGE PATH IF NEEDED
mappings:
App:
type: annotation
dir: '%kernel.project_dir%/src/Entity/'
prefix: 'App\Entity\'
运行php bin/console make:entity --regenerate
答案 2 :(得分:0)
我有相同的错误,发现的解决方法是将repositoryClass添加到所有实体:
@ORM\Entity(repositoryClass="App\Repository\DefaultRepository")
最终代码如下:
/**
* Key
*
* @ORM\Table(name="`key`")
* @ORM\Entity(repositoryClass="App\Repository\DefaultRepository")
*/
希望对您有帮助
答案 3 :(得分:0)
在您的实体类中,确保命名空间的格式如下:namespace App\Entity
答案 4 :(得分:0)
在我的情况下,是因为我写了:
php bin/console make:entity --regenerate App\Entity\Course
代替(注意双反斜杠)
php bin/console make:entity --regenerate App\\Entity\\Course