问题:

将实体持久保存到带有理论的数据库中时,出现以下MySQL错误,我的实体名称都不是保留字。 我尝试了许多事情,包括重建数据库和表以及运行doctrine:schema:update,但无济于事。 任何帮助将不胜感激。

错误:

string(601)“执行'INSERT INTO版本(序列,标题,艺术家,长度,体裁,描述,曲目,下载,缩略图,插图)时发生异常。值(?,?,?,?,?,?,?,? ,?,?,?)'与参数[“ FREELOV”,“ afds”,“ asdf”,“ 2:23”,“ asdf”,“ asdf”,“ fdsaf => 2:23”,“ FREELOV.zip “,” FREELOV.jpg“,” FREELOVThumb.jpg“]:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册以获取正确的语法在第1行的'release(序列号,标题,艺术家,长度,体裁,描述,曲目,下载,th)附近使用”

实体:

    namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Class Release
 * @ORM\Entity
 * @ORM\Table(name="release")
 */

class Release
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
/**
 * @ORM\Column(type="string", length=255)
 */
protected $serial;
/**
 * @ORM\Column(type="string", length=255)
 */
protected $title;
/**
 * @ORM\Column(type="string", length=255)
 */
protected $artist;
/**
 * @ORM\Column(type="string", length=255)
 */
protected $length;
/**
 * @ORM\Column(type="string", length=255)  
 */
protected $genre; # Array
/**
 * @ORM\Column(type="string", length=255)
 */
protected $description;
/**
 * @ORM\Column(type="string", length=255) 
 */
protected $tracks; 
/**
 * @ORM\Column(type="string", length=255)
 */
protected $download;
/**
 * @ORM\Column(type="string", length=255) 
 */
protected $thumbnail;
/**
 * @ORM\Column(type="string", length=255) 
 */
protected $artwork;


/**
 * Get id
 *
 * @return integer
 */
public function getId()
{
    return $this->id;
}

// Doctrine generated getters & setters

ReleaseController:

//namespaces and use statments

class ReleaseController extends Controller{

    public function indexAction(Request $request)
    {
        $release = new Release();

        $form = $this->createFormBuilder($release)
                    ->add('Artist', 'text')
                    ->add('Title', 'text')
                    ->add('Genre', 'text')
                    ->add('Description', 'textarea')
                    ->add('Tracks', 'text', array('attr' => array('style' => 'display:none')))
                    ->add('Length', 'text', array('label' => ' ', 'attr' => array('style' => 'display:none')))
                    ->add('addTrack', 'button', array('label'=>'+'))
                    ->add('Download', 'file') 
                    ->add('Thumbnail', 'file') 
                    ->add('Artwork', 'file') 
                    ->add('save', 'submit', array('label' => 'Add Release'))
                    ->getForm();

        $form->handleRequest($request);

        if($form->isValid()){
            $rel = $this->createAction($form);

            dump($rel);

            $this->addToDB($rel);
        }

        return $this->render('cms/addRel.html.twig', array(
            'form' => $form->createView(),
        ));

    }



    public function createAction(Form $form)
    {
        $release = new Release();
        $release->setSerial('FREELOV'.$release->getId());


        $artist = $form->get('Artist')->getData();
        $title = $form->get('Title')->getData();
        $genre = $form->get('Genre')->getData();
        $description = $form->get('Description')->getData();
        $tracks = $form->get('Tracks')->getData();
        $length = $form->get('Length')->getData();
        $download = $this->uploadAction($form, 'Download', $release);
        $thumb = $this->uploadAction($form, 'Artwork', $release);
        $art = $this->uploadAction($form, 'Thumbnail', $release);


        $release->setArtist($artist);
        $release->setTitle($title);
        $release->setLength($length);
        $release->setGenre($genre);
        $release->setDescription($description);
        $release->setTracks($tracks);
        $release->setDownload($download);
        $release->setThumbnail($thumb);
        $release->setArtwork($art);

        return $release;
    }

    public function uploadAction($form, $file, Release $rel)
    {
        $fileString = $rel->getSerial();

        #TODO: Needs to include error checking, use preg_match and $form[]->getData to make sure files are the right type
        switch($file)
        {
            case 'Download':
                $fileString = $fileString.'.zip';
            break;
            case 'Thumbnail':
                $fileString = $fileString.'Thumb.jpg';
                break;
            case 'Artwork':
                $fileString = $fileString.'.jpg';
            break;
        }

        $dir = 'bin/'; #FIXME: Needs to be directory for file uploads (maybe definable in the parameters.yml?)

        $form[''.$file]->getData()->move($dir, $fileString);
        return $fileString;
    }

    public function addToDB(Release $release)
    {
        try{
        $em = $this->getDoctrine()->getManager();
        $em->persist($release);
        $em->flush();
        return new Response('New release added: '.$release->getArtist().' - '.$release->getTitle());
            }catch(\Exception $e){
        var_dump($e->getMessage());
        }

    }




}

===============>>#1 票数:0 已采纳

RELEASE是MySQL中的保留字

如果您确实希望将表命名为release ,则必须在实体中设置表名称并对其进行qoute,如下所示:

<?php

/**
  * @ORM\Enity
  * @ORM\Table(name="`release`")
  */
class Release;

…

但是,如果您仍然可以选择其他名称,建议您这样做。 这样可以避免以后出现很多麻烦。

  ask by kBeard translate from so

未解决问题?本站智能推荐:

2回复

Doctrine无法使用Mamp连接到Symfony2中的数据库

我正在尝试通过学说创建数据库。 当我运行上述命令时,出现以下错误: 我尝试过的 这种符号链接的创建对我不起作用。 我已经尝试了database_host: localhost和database_host: 127.0.0.1没什么变化。 我知道在MAMP上可以
2回复

Symfony2使用Doctrine从现有数据库导入实体

我是symfony的初学者。 我试图遵循官方文档http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html在Debian测试箱中将MySQL中的实体导入symfony2项目。 但我没有成功。 然后在
2回复

使用doctrine的symfony2动态数据库连接

我试图在Symfony 2中使用doctrine进行多个数据库连接但不能这样做。 我已经在谷歌和堆栈溢出中进行了广泛搜索,但无论在哪里,它都是通过config.yml文件或动态数据库完成的,其中所有数据库都具有相同的模式/实体。 但对于我的情况,数据库是基于子域确定的,并且所有子域的
2回复

如何使用选择框从数据库行symfony2中获取数据

我目前在symfony2中处理一个小项目。 我用crud命令做了一个简单的表。 我有一个名为“ voorraad”(= stock)的实体,该实体与实体“ product”和实体“ Locatie”(= Location)有关联。 工作原理:我可以在库存中添加产品和位置。 所以我的问
2回复

在symfony上的MySQL数据库上更新create longtext字段的模式

我想使用Doctrine模式将MySQL字段从文本更新为longtext。 现在我的代码是这样的: 问题是当我将此字段更改为此代码时 并在控制台上运行“php app / console doctrine:schema:update --force”命令,它说“无需更新 -
1回复

我怎样才能从mysql数据库中获取带有学说的数据表(Symfony 4)?

像这样我的表是从数组填充数据: 但是我需要的是直接从mySQL数据库获取数据。 我用教义尝试了这个: 但是我得到一个错误: 未捕获的PHP异常Symfony \\ Component \\ Debug \\ Exception \\ FatalThrowableErr
2回复

Symfony2学说:如何禁用mysql连接? [重复]

这个问题已经在这里有了答案: 如何在symfony2 2中 禁用数据库配置 我将Symfony2用于完全不使用mysql的项目,并且我的服务器上未安装mysql。 在parameters.yml我将所有内容保留为默认值。 现在每次删除缓存时, 在第一页刷
2回复

不向MySQL DB中插入重复项-Doctrine和Symfony2

我使用Symfony2和Doctrine将来自API的某些数据持久保存到MySQL数据库中。 我有一个称为Gig的实体,我使用注释来设置约束。 我认为相关部分如下所示: 在我的控制器中,我使用Buzz https://github.com/sensiolabs/SensioBuzzB
2回复

一种使用Symfony2和Doctrine的数据透视表

我正在使用Symfony,Doctrine和jQuery开发用于应用程序质量服务的KPI管理工具。 我创建了三个实体: 应用程序(ID,名称等) KPI(ID,名称,类别等) 值(Application_ID,KPI_ID,月,值) 所以我的值表有一些值,
1回复

使用`urlencode`的Symfony 4 Flex数据库连接

我正在使用Symfony 4 + Flex启动一个新项目。 目前,我正在尝试将新应用程序连接到MySQL数据库。 我正在遵循Symfony文档 ,并且已经将doctrine添加到我的依赖项中: 然后,我将数据库连接信息添加到.env内部定义的环境变量DATABASE_URL如下所