あいどる💖たいむ

あいどるやってます。

Phalcon DevToolsでsnake caseの列名をcamel caseにしたモデルを生成する

テーブルの列名はsnake caseだけど、モデルの変数名はcamel caseにしたい。 そんなときのtips。

テーブル

CREATE TABLE items
(
  id      INT AUTO_INCREMENT PRIMARY KEY,
  title   VARCHAR(255) NULL,
  body    TEXT         NULL,
  user_id INT          NULL
);

このテーブルのモデルでは、user_idはuserIdという変数名でする。

Phalcon DevTools

versionは3.2.3

modelコマンドに--camelizeと--mapcolumnをつける。 --camelizeはcamel caseにするオプション。
`--mapcolumnはcolumnMapをモデルに持たせるオプション。

phalcon model items --camelize --mapcolumn

生成されたモデル

<?php

class Items extends \Phalcon\Mvc\Model
{

    /**
     *
     * @var integer
     * @Primary
     * @Identity
     * @Column(type="integer", length=11, nullable=false)
     */
    public $id;

    /**
     *
     * @var string
     * @Column(type="string", length=255, nullable=true)
     */
    public $title;

    /**
     *
     * @var string
     * @Column(type="string", nullable=true)
     */
    public $body;

    /**
     *
     * @var integer
     * @Column(type="integer", length=11, nullable=true)
     */
    public $userId;
  
// 〜〜〜〜〜〜〜 中略 〜〜〜〜〜〜〜〜

    /**
     * Independent Column Mapping.
     * Keys are the real names in the table and the values their names in the application
     *
     * @return array
     */
    public function columnMap()
    {
        return [
            'id' => 'id',
            'title' => 'title',
            'body' => 'body',
            'user_id' => 'userId'
        ];
    }

}

テーブルの変数名とモデルの列名が異なる場合は、columnMapで対応づけするが、これを自動で書き込んでくれている。