Php 在yaml中添加新表时CRUDlex不工作

Php 在yaml中添加新表时CRUDlex不工作,php,symfony,crud,silex,Php,Symfony,Crud,Silex,我试图找到一种使用symfony组件为现有数据库、CRUD和composer生成UI的更快方法 找到了。正在使用composer进行安装,还包括安装程序 它工作正常,直到我在示例中添加新的表定义为止 无论yml中添加了什么表,当访问时总是抛出类似于此的错误 完整的错误消息请检查下面的屏幕截图 crudlex总是问“id”和“deleted_at” 代码与CRUDled示例相同 和文件夹结构 vendor web > .htaccess > index.php com

我试图找到一种使用symfony组件为现有数据库、CRUD和composer生成UI的更快方法

找到了。正在使用composer进行安装,还包括安装程序 它工作正常,直到我在示例中添加新的表定义为止

无论yml中添加了什么表,当访问时总是抛出类似于此的错误

完整的错误消息请检查下面的屏幕截图

crudlex总是问“id”和“deleted_at”

代码与CRUDled示例相同

和文件夹结构

vendor
web
    > .htaccess
    > index.php
composer.json
crud.yml  
注意:我对silex和symfony2组件完全陌生^_^ 谢谢,任何建议都非常感谢

您缺少(至少)一个必需的元字段:

  • created_at(datetime,非null):记录创建时
  • 更新时间(datetime,非空):上次编辑记录时
  • 版本(int,非null):记录的版本随每次编辑而递增
  • 删除时间(datetime):如果不为空:记录(软)删除时
在您的情况下,完整的表创建SQL如下所示:

CREATE TABLE `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  `deleted_at` datetime DEFAULT NULL,
  `version` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

您的数据库与您的架构已过期。你需要以某种方式更新它(恐怕我是symfony而不是silex,所以我缺乏这方面的知识)。谢谢你,菲尔!啊,我明白了,可以禁用那个元字段吗?若所有的表都有metafieldsHi,那个么看起来会很奇怪,我担心禁用它们目前是不可能的。但是这个特性已经上市了:--从来没有这个特性的实际用例,因此它还没有实现。:)是的,它可能看起来很“奇怪”,但实际上我们一直都在使用它,因为这些数据以后会很有用,而且磁盘空间很便宜。:)但我同意您可能无法更改数据库的现有模式。
    $loader = require __DIR__.'/../vendor/autoload.php';

    //$loader->add('CRUDlex', __DIR__.'/../../CRUDlex/src');
    $app = new Silex\Application();

    $app['debug'] = true;

    $app->register(new Silex\Provider\DoctrineServiceProvider(), array(
        'dbs.options' => array(
            'default' => array(
                'host'      => '127.0.0.1',
                'dbname'    => 'dbname',
                'user'      => 'root',
                'password'  => '',
                'charset'   => 'utf8',
            )
        ),
    ));
    $app->register(new Silex\Provider\SessionServiceProvider());

    $dataFactory = new CRUDlex\MySQLDataFactory($app['db']);
    $app->register(new CRUDlex\ServiceProvider(), array(
        'crud.file' => __DIR__ . '/../crud.yml',
        'crud.datafactory' => $dataFactory
    ));
    $app->register(new Silex\Provider\TwigServiceProvider());

    //$app['crud.layout'] = 'layout.twig';
    $app->mount('/', new CRUDlex\ControllerProvider());

    $app->match('/', function() use ($app) {
        return $app->redirect($app['url_generator']->generate('crudList', array('entity' => 'library')));
    })->bind('homepage');

    $app->run();
vendor
web
    > .htaccess
    > index.php
composer.json
crud.yml  
CREATE TABLE `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  `deleted_at` datetime DEFAULT NULL,
  `version` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;