2016-12-18 12 views
3

symfonyコンポーネントを使用して、既存のデータベース、CRUD、作曲者のためのUIをより速く生成する方法を見つけようとしています。yamlに新しいテーブルを追加するとCRUDlexが動作しない

が見つかりましたCRUDlexです。これまでの表がYMLに追加どのような場合に、アクセスhttp://localhost/crudlex/web/category

InvalidFieldNameException in AbstractMySQLDriver.php line 71: An exception occurred while executing 'SELECT COUNT(id) FROM `category` `category` WHERE deleted_at IS NULL': 
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'deleted_at' in 'where clause' 
、それは常にこのようなエラーを投げるのIMは、試料中の crud.yml

category: 
    label: Category 
    table: category 
    fields: 
    name: 
     type: text 
     label: Name 
     required: true 
     unique: true 

を新しいテーブル定義を追加するまで、作曲、またセットアップCRUDlex sample でインストールやって、それは、正常に動作します

完全なエラーメッセージが常に "ID" と「DELEを求め CRUDlex Error

crudlex下のスクリーンショットをチェックしてください私は、ありがとう ^ _ ^全くサイレックスする新しいとSymfony2のコンポーネントをm個:ted_at」

コードがCRUDledサンプルindex.php

$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 

ノートと同じです本当にお勧めしますか?

+0

データベースがスキーマに対して古くなっています。あなたは何とかそれを更新する必要があります(私はそれが私の知識が不足しているので恐れていないsymfony silexです)。 – DevDonkey

答えて

2

あなたは少なくとも必要なメタフィールドの1つがありません:

  • のcreated_at(日時、NOT NULL):レコードが最後に編集された
  • バージョン(int型、NOT NULL):バージョンレコードは
  • updated_atの(日時、NOT NULL)を作成しましたレコードの、各編集と刻み
  • はdeleted_at(日時):nullでない場合:

    :レコードが(ソフト)あなたのケースでは、完全なテーブル作成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; 
+0

Philありがとうございます!ああ、私は、メタフィールドを無効にすることは可能ですか? すべてのテーブルにメタフィールドがあると奇妙に見えます – Andy

+0

こんにちは、それらを無効にすることは現在できません。私は恐れています。しかし、この機能はプレート上にあります:https://github.com/philiplb/CRUDlex/issues/11 https://github.com/philiplb/CRUDlex/issues/14 https://github.com/philiplb/CRUDlex/ issues/38 - この機能の実際のユースケースはありませんでした。したがって、まだ実装されていません。 :)はい、それは "奇妙な"のように見えるかもしれませんが、このデータは後で有用であり、ディスクスペースは安いので、実際には常に使用します。 :)しかし、私はあなたがDBの既存のスキーマを変更する立場にないかもしれないことに同意します。 – Philip

関連する問題