Генератор моделей для codeigniter datamapper orm

Я новичок в datamapper orm, поэтому сначала я решил создать генератор моделей для него, чтобы он мог облегчить мою жизнь позже.

для начала я создал чистую папку ci-2. и в controller/welcome.php я написал

public function index()
{
    $this->output->enable_profiler(TRUE);
    $this->load->helper('inflector');
    $this->load->helper('file');
    echo "<pre>";

    //list alll tables in database
$tables = $this->db->list_tables();


    //grap all relations for database 'clinic-master'

    $relations=$this->db->query("SELECT table_name, column_name,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
    FROM INFORMATION_SCHEMA.key_column_usage
    WHERE referenced_table_schema = 'clinic-master'
    ORDER BY table_name, column_name");

    ///looping tables
    foreach ($tables as $table){
        $x=$this->load->view('db',['table'=>$table,'fields'=>$this->db->list_fields($table)
        ,'relations'=>$relations],TRUE);

        if(write_file("./application/models/dm/$table.php", $x))
                echo "<hr><h1>$table</h1><code>$x</code>";
        else
                echo "<hr><h1>$table</h1><code>Failed to write file</code>";
    }
}

и views/db.php включают

<?$t=singular($table);echo"<?php";?>

class <?=$t?> extends DataMapper {

    public $table = '<?=$table?>';
    /*
    <?print_r($relations->result());?>
    */

    public $has_one = array();
    public $has_many = array();

    var $validation = array(
    <?$x='';foreach($fields as $f){
        $x.="'$f' => array(
            'rules' => array('required'),
            'label' => '<?=$f?>'
        ),";
    }
    echo trim($x,',');
    ?>
    );

    public $default_order_by = array('id' => 'desc');

    // Optionally, don't include a constructor if you don't need one.
    function __construct($id = NULL)
    {
        parent::__construct($id);
    }

    // Optionally, you can add post model initialisation code
    function post_model_init($from_cache = FALSE)
    {
    }
}

/* End of file <?=$t?>.php */
/* Location: ./application/models/<?=$t?>.php */

Теперь я застрял в том, как повторить has_one и has_many!

это пример того, что я получаю из запроса $ Relations.

введите описание изображения здесь

Например, в первом ряду показано, что в инвентаре есть одна клиника, а в таблице клиник много инвентарей. (модель клиники, инвентарь)

так что я зациклился на $ Relations, и я пришел к таблице Inventroy, например (первые 2 строки)

public $has_one = array(
    'clinic' => array(
        'class' => 'clinic',
        'other_field'=>'clinic',
        join_other_as=>'id'
        ),
    'code' => array(
        'class' => 'inventory_item',
        'other_field'=>'code',
        join_other_as=>'id'
        )
);

SCHEMA::

inventroy:id,code(fk),clinic(fk),amount

clinics : id,name

inventory_item:id,name,min_amount,etc....

code->inventory_item.id
clinic->clinics.id

Вопрос

  1. Что еще я должен включить в массив $has_one, кроме класса, чтобы убедиться, что он работает?
  2. что-нибудь уже существует, что делает работу?
  3. Кто-нибудь получил какой-либо другой источник, который объясняет продвинутые отношения, используя datamapper, кроме WanWizard Guide? потому что я не могу понять это очень хорошо, особенно потому, что он включает в себя только код и нет схемы таблицы для сравнения.

0 ответов

Другие вопросы по тегам