Php Symfony2 transtable添加查询
我对条令和Transtable有意见 我想向数据库添加新数据。我的默认语言是pl\U pl 我的控制器:Php Symfony2 transtable添加查询,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,我对条令和Transtable有意见 我想向数据库添加新数据。我的默认语言是pl\U pl 我的控制器: namespace Gogs\CMSBundle\Controller; use Gogs\CMSBundle\Entity\Page; ... public function addAction() { $em = $this->getDoctrine()->getManager(); $page = new Page();
namespace Gogs\CMSBundle\Controller;
use Gogs\CMSBundle\Entity\Page;
...
public function addAction()
{
$em = $this->getDoctrine()->getManager();
$page = new Page();
$page->setName('new');
$em->persist($page);
$em->flush();
$page->setTranslatableLocale('it');
$page->setName('new ita');
$em->persist($page);
$em->flush();
$page->setTranslatableLocale('en');
$page->setName('new eng');
$em->persist($page);
$em->flush();
$em->persist($page);
$em->flush();
$abc = 'Success';
return new Response($abc);
}
打开web/app_dev.php/add页面时,会出现以下错误:
执行“插入到页面(名称、,
带参数的内容、菜单、顺序、图标)值(?、、、?、?)'
[“新建”,空,空,空,空]:
SQLSTATE[42000]:语法错误或访问冲突:1064您有
SQL语法错误;检查与您的产品相对应的手册
MySQL服务器版本,以便使用正确的语法(接近“顺序,图标”)
第1行的值('new',NULL,NULL,NULL',NULL')
mypage.php
<?php
namespace Gogs\CMSBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\Translatable\Translatable;
/**
* Page
*
* @ORM\Table()
* @ORM\Entity
*
*/
class Page
{
/**
* @Gedmo\Locale
*/
private $locale = 'pl_PL';
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
* @Gedmo\Translatable
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="content", type="text")
* @Gedmo\Translatable
*/
private $content;
/**
* @var string
*
* @ORM\Column(name="menu", type="string", length=255)
*/
private $menu;
/**
* @var integer
*
* @ORM\Column(name="order", type="integer", length=32)
*/
private $order;
/**
* @var string
*
* @ORM\Column(name="icon", type="string", length=255)
*/
private $icon;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Page
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set content
*
* @param string $content
* @return Page
*/
public function setContent($content)
{
$this->content = $content;
return $this;
}
/**
* Get content
*
* @return string
*/
public function getContent()
{
return $this->content;
}
/**
* Set menu
*
* @param string $menu
* @return Page
*/
public function setMenu($menu)
{
$this->menu = $menu;
return $this;
}
/**
* Get menu
*
* @return string
*/
public function getMenu()
{
return $this->menu;
}
/**
* Set order
*
* @param integer $order
* @return Page
*/
public function setOrder($order)
{
$this->order = $order;
return $this;
}
/**
* Get order
*
* @return integer
*/
public function getOrder()
{
return $this->order;
}
/**
* Set icon
*
* @param string $icon
* @return Page
*/
public function setIcon($icon)
{
$this->icon = $icon;
return $this;
}
/**
* Get icon
*
* @return string
*/
public function getIcon()
{
return $this->icon;
}
public function setTranslatableLocale($locale)
{
$this->locale = $locale;
}
}
不幸的是,在表“Page”中,记录8有了新的值,表ext\u translation进一步为空
编辑2:
我解决了我的问题
config.yml中缺少#条令扩展配置。现在看来:
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
auto_mapping: true
mappings:
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
# Doctrine Extensions Configuration
stof_doctrine_extensions:
default_locale: "%locale%"
translation_fallback: true
orm:
default:
translatable: true
$repository = $this->getDoctrine()
->getRepository('GogsCMSBundle:Page');
$article = $repository->find(8);
$article->setName('my title in eng');
$article->setContent('my content in eng');
$article->setTranslatableLocale('en'); // change locale
$em->persist($article);
$em->flush();
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
auto_mapping: true
mappings:
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
# Doctrine Extensions Configuration
stof_doctrine_extensions:
default_locale: "%locale%"
translation_fallback: true
orm:
default:
translatable: true