我安装了与该链接相同的StofDoctrineExtensionsBundle。相比之下,页面呈现速度非常慢,因为大约 5 分钟。我只需要用户实体(FOSUSERBUNDLE)中的可慢功能。我认为在没有某些元素的情况下,它的工作速度会更快。
使用此软件包只能慢速运行的最低配置是什么。是否需要所有映射(监视链接)?
我需要 config.yml 示例。
编辑添加侦听器后,我的 config.yml 看起来:
...
orm:
default_entity_manager: default
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
connection: default
mappings:
AppBundle: ~
gedmo_translatable:
type: annotation
prefix: Gedmo'Translatable'Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
alias: GedmoTranslatable # (optional) it will default to the name set for the mapping
is_bundle: false
gedmo_translator:
type: annotation
prefix: Gedmo'Translator'Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity"
alias: GedmoTranslator # (optional) it will default to the name set for the mapping
is_bundle: false
gedmo_loggable:
type: annotation
prefix: Gedmo'Loggable'Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity"
alias: GedmoLoggable # (optional) it will default to the name set for the mappingmapping
is_bundle: false
gedmo_tree:
type: annotation
prefix: Gedmo'Tree'Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
alias: GedmoTree # (optional) it will default to the name set for the mapping
is_bundle: false
...
stof_doctrine_extensions:
class:
sluggable: ~
...
我的实体与蛞蝓:
namespace AppBundle'Entity;
use Gedmo'Mapping'Annotation as Gedmo;
use Doctrine'ORM'Mapping as ORM;
/**
* Profile
*
* @ORM'Table(name="profile")
* @ORM'Entity(repositoryClass="AppBundle'Repository'ProfileRepository")
*/
class Profile
{
/**
* @var int
*
* @ORM'Column(name="id", type="integer")
* @ORM'Id
* @ORM'GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM'Column(name="name", type="string", length=150, nullable=true)
*/
private $name;
/**
* @Gedmo'Slug(fields={"title", "name"})
* @ORM'Column(length=128, unique=true)
*/
private $slug;
/**
* @var string
*
* @ORM'Column(name="city", type="string", length=150, nullable=true)
*/
private $city;
/**
* @var string
*
* @ORM'Column(name="voivodeship", type="string", length=50, nullable=true)
*/
private $voivodeship;
/**
* @var string
*
* @ORM'Column(name="description", type="text", nullable=true)
*/
private $description;
/**
* @var string
*
* @ORM'Column(name="category", type="string", length=100, nullable=true)
*/
private $category;
/**
*
* @ORM'OneToOne(targetEntity="User", cascade={"persist"})
* @ORM'JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
*/
protected $user;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
*
* @return Profile
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set city
*
* @param string $city
*
* @return Profile
*/
public function setCity($city)
{
$this->city = $city;
return $this;
}
/**
* Get city
*
* @return string
*/
public function getCity()
{
return $this->city;
}
/**
* Set voivodeship
*
* @param string $voivodeship
*
* @return Profile
*/
public function setVoivodeship($voivodeship)
{
$this->voivodeship = $voivodeship;
return $this;
}
/**
* Get voivodeship
*
* @return string
*/
public function getVoivodeship()
{
return $this->voivodeship;
}
/**
* Set description
*
* @param string $description
*
* @return Profile
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set category
*
* @param string $category
*
* @return Profile
*/
public function setCategory($category)
{
$this->category = $category;
return $this;
}
/**
* Get category
*
* @return string
*/
public function getCategory()
{
return $this->category;
}
/**
* Set user
*
* @param 'AppBundle'Entity'User $user
*
* @return Profile
*/
public function setUser('AppBundle'Entity'User $user = null)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return 'AppBundle'Entity'User
*/
public function getUser()
{
return $this->user;
}
/**
* Get slug
*
* @return string
*/
public function getSlug()
{
return $this->slug;
}
}
现在网站没有生成。刷新的数据库,没有任何帮助
你只需要激活可慢动作侦听器:
# app/config/config.yml
stof_doctrine_extensions:
class:
sluggable: ~
并创建您的 slug 属性:
<?php
namespace Entity;
use Gedmo'Mapping'Annotation as Gedmo;
use Doctrine'ORM'Mapping as ORM;
/**
* @ORM'Table(name="articles")
* @ORM'Entity
*/
class Entity
{
...
/**
* @Gedmo'Slug(fields={"username"})
* @ORM'Column(length=128, unique=true)
*/
private $slug;
...
}
我已经从阿尔萨斯的答案中修改了侦听器定义,它现在可以工作了。
# app/config/config.yml
stof_doctrine_extensions:
default_locale: en
orm:
default:
tree: false
timestampable: false
sluggable: true
translatable: false