2016-06-27 8 views
0

多分これは簡単な質問ですが、私は料理本で見つけられませんでした。 「IES」Cakephp 3 - 複数の名前のコンベンション

例のいくつかの複数の単語のときに名前、私は混乱しています: 市 - >都市

  • コントローラー:CitiesController

  • 表:CitiesTable

  • モデル:シティまたはシティ?

私はアプリを実行すると両方ともエラーが発生しました。エラーはモデル名を見つけませんでした。

私は英語があまりにも悪い場合は何か答えて申し訳ありませんありがとうございます。


更新日6月28日2016 解決策が見つかりました。 SRC /モデル/表/ CitiesTable.php

CitiesTable

  • コントローラー:のsrc /コントローラ/ CitiesController.phpでCitiesController

  • 表実際に、私はちょうど自分の名前を保持しました

  • モデルまたはエンティティ:SRC /モデル/エンティティ/ City.phpで

それは私のために働く。

ありがとうございます。

+0

**モデル**?おそらく**エンティティ**を意味しましたか?エラーを受け取ったときはいつでも_full_ stacktraceを含む_complete_エラーメッセージを投稿してください(理想的には、ログから適切に読める形式でコピーされるのが理想です)。たとえ問題がCakePHPに慣れている人にとって明らかであっても! – ndm

+0

いくつかのグーグルがそれを明らかにする:[singular](http://sandbox.dereuromark.de/sandbox/inflector?string=city)vs [plural](http://sandbox.dereuromark.de/sandbox/inflector?string=cities )。しかし、一般的に文書は非常にきれいだと述べています。特に、3.xクラスとテーブルクラスでは、コントローラとテーブル(モデル)の両方が複数であるためです。エンティティだけがそうではありません。 – mark

答えて

0

コントローラ/エンティティ/テーブル名の一般的な使用方法は、名詞の単数形です(ご使用の場合はCityController,およびCity)。これは、単数形と複数形の間の混乱を取り除きます。

もう1つの良い例は、DB内のテーブルの名前が、それらが表すエンティティの単数形で指定されることです(テーブルがcityなので、テーブルクラスは 'CityTable'と呼ばれます)。したがって、ソース内の情報とDBのテーブルを常に関連付けることができます。

0

更新8月11日2016

こんにちはすべて、これに答えるために長い時間のために申し訳ありません

。私はかなり忙しかった。私は私の答えを見つけました。私は "都市"のテーブルだけを使用しませんでした。代わりに "m_cities"を使用しました。 (Mはマスターを意味します)。だから、私のすべてのファイルとクラス名は以下のとおりです。

モデル>エンティティ:

MCity.php 

クラス:

class MCity extends Entity{ 
... 
} 

モデル>表

MCitiesTable.php 

クラス:

class MCitiesTable extends Table 
{ 
... 
} 

ファイルMCity.phpのクラスMCityにあります。私は、CakePHPのテーブル名を宣言するための次の内容で初期化を定義しました。私のテーブル名を理解しています。このクラスの

parent::initialize(); 
//Define used table name in database 
$this->table('m_cities'); 

だから、最終的内容は次のとおりです。

class MCity extends Entity 
{ 
    public function initialize(array $config) 
    { 
     parent::initialize(); 
     //Define used table name in database 
     $this->table('m_cities'); 

    }//end initialize 

}//end class 

すべてが今まで私のプロジェクトのために[OK]を働いています。誰かが私の更新を投稿で見なかったので、私は人を検索するための答えとして再更新します。

ありがとうございます。

関連する問題