Modelinden veritabanı ile PHP Orm

3 Cevap php

Ben oldukça Django alışkınım. Django ile ORM için model tanımlamak ve bu modellere dayalı veri depolamak için veritabanı kendisini değiştirerek / üretme ilgilenir.

Php Ben benzer bir çözüm arıyorum. Doktrin kadarıyla gördüğümüz gibi, sen DB ve then bunu eklemek, veya komut dosyası veritabanı oluşturma, then yazmak zorunda, standart php ORM gibi görünüyor, ama modelleri oluşturmak ve çalışmaya başlamak.

Doktrin ya da başka bir php orm çözümü ile db oluşturma için bir one step modeli tanımı var mı? Teşekkürler.

3 Cevap

Django kendisini sadece ORM DB ve tüm bu şeyler oluşturmak için sorumlu olduğunu musunuz?

Ama Doktrin setup automatically yapabilirsiniz. Ben en önemli bölümünü kopyalanan:

// generate.php

require_once('bootstrap.php');

Doctrine_Core::dropDatabases();
Doctrine_Core::createDatabases();
Doctrine_Core::generateModelsFromYaml('schema.yml', 'models');
Doctrine_Core::createTablesFromModels('models');

schema.yml YAML biçiminde tablo tanımlarını içerir.

Zaten çerçeveler bahsediyorsun gibi, Symfony bir göz olabilir hemen hemen istediğiniz ve bunun için daha kolay bir arayüz sağlar şeyler yapar (Öğretiler kendisinden daha). Sen ORM Propel veya Doktrini kullanabilir ya.

% 100 aynı ama ben Propel kullanmayın (http://propel.phpdb.org/trac/) zaman PHP ORM için muhtaç. Bir süre için yaklaşık edilmiş ve oldukça olgun. Ayrıca Symfony Framework parçasıdır. Taşıma Django olarak oldukça güzel ama hala oldukça uygun değildir.

phpDataMapper bunu yapmak için özel olarak tasarlanmıştır. Orada onunla birlikte gelen hiçbir dağıtılan kabuk veya cli komut vardır, ancak kod temeli bu yapabilirsiniz:

Kurulum adaptörü:

try {
    $adapter = new phpDataMapper_Adapter_Mysql('localhost', 'db', 'root', '');
} catch(Exception $e) {
    echo $e->getMessage();
    exit();
}

Lütfen mapper / tablo alanlarını tanımlayın:

class PostMapper extends phpDataMapper_Base
{
    // Specify the data source (table for SQL adapters)
    protected $_datasource = "blog_posts";

    // Define your fields as public class properties
    public $id = array('type' => 'int', 'primary' => true, 'serial' => true);
    public $title = array('type' => 'string', 'required' => true);
    public $body = array('type' => 'text', 'required' => true);
    public $status = array('type' => 'string', 'default' => 'draft');
    public $date_created = array('type' => 'datetime');
}

Adaptörü (ler), ve kurulum tablolar ile eşleştiricisini örneğini:

$postMapper = new PostMapper($adapter [, $adapterSlave]);
$postMapper->migrate();

http://phpdatamapper.com/documentation/getting-started/