Кто-нибудь еще использует DB-Schema-Validation для проектов MVC? - PullRequest
0 голосов
/ 03 августа 2009

Хорошо, частично вдохновленный проверкой модели CakePHP. Я создал проект, в котором используется отдельный файл схемы базы данных. Мне не понравилось, что в CakePHP файл модели и db-схема объединены в одном файле php. Мне нравится иметь их отдельно.

Все мои обновления, вставки и удаления в sql сначала передаются по этой схеме. Я написал функции update () insert () delete () для автоматической проверки.

Почему? Потому что я могу принять сообщение от посетителя и отправить не проверенные данные в мою базу данных без необходимости проверять их. Моя схема фильтрует на невинные и не очень невинные нарушения.

Вот пример схемы базы данных:

<?php
$schemas    = array('database_name_hidden'=>array(
'assigned_weeks'=>array(
    'id'=>array('id'),
    'user_id'=>array('foreign_id','users'),
    'week_number'=>array('posint'),
    'year'=>array('posint'),
    'unit_id'=>array('foreign_id','units'),
    'claim_listing'=>array('posint'),
    'created'=>array('created'),
    'modified'=>array('modified'),
    'resort_id'=>array('foreign_id','resorts','required'),
),

'trade_listings'=>array(
    'id'=>array('id'),
    'assigned_week_id'=>array('foreign_id', 'assigned_weeks','required'),
    'listing_assigned_week_id'=>array('foreign_id', 'assigned_weeks'),
    'opposite_id'=>array('numeric'),
    'listed'=>array('bool'),
    'prev_id'=>array('foreign_id','trade_listings'),
    'next_id'=>array('foreign_id','trade_listings'),
    'listing_email'=>array('email'),
    'listing_description'=>array('text'),
    'trade_confirmation_number'=>array('text'),
    'external_resort_id'=>array('foreign_id','resorts'),
    'external_unit_number'=>array('text','size'=>array(1,6)),
    'external_start_time'=>array('time_future',),
    'external_end_time'=>array('time_future'),
    'admin_comment'=>array('text'),
    'comment'=>array('text'),
    'created'=>array('created'),
    'creator'=>array('creator'),
    'modified'=>array('modified'),
    'modifier'=>array('modifier'),
    'resort_id'=>array('foreign_id','resorts','required'),
),
);
?>

Кто-нибудь еще делает что-то подобное?

1 Ответ

1 голос
/ 03 августа 2009

Я не уверен, что действительно понимаю вопрос, но, говоря о БД, валидации, схеме и PHP, мне действительно нравится ORM Framework, называемый Doctrine .

(Это стек ORM по умолчанию в PHP Framework symfony , кстати; но его можно довольно легко интегрировать с другими платформами - я уже использовал его, например, с Zend Framework)

Похоже, что его веб-сайт сейчас недоступен (в последние недели они экспериментировали с проблемами, связанными с высокой нагрузкой) , но он предоставляет классы / метод для проверки данных на основе YAML-файлы, описывающие схему, перед вставкой данных в БД.

Возможно, вы захотите взглянуть на это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...