1

私は自分のデータベースを計画していましたが、CakePHP はそのクラスに独自のプレフィックスを付けていないため、命名規則に従って作成されたモデル クラスと衝突する可能性のある多くのクラスがあります。

だから私の質問は3つの部分に分かれています:

  1. 予約されているデータベーステーブル名のリスト、または予約されているかどうかを確認する簡単な方法はありますか? 100 個のテーブルを持つデータベースを計画していて、いくつかのテーブルとそれらの接続の名前を変更する必要があることに気付いたら、それは苦痛です...

  2. CakePHP の魔法を壊すことなく簡単に回避する方法はありますか? アドバイスされていますか?テーブル名の先頭に独自のプレフィックス「my_」などを追加して、テーブルに別の方法で名前を付けるのが最善の方法ですか?

  3. すべての種類のテーブル名を使用できる名前空間または同様のものは、CakePHP バージョン 2 に来ますか?

4

3 に答える 3

1

これは少し古いスレッドであることは知っていますが、何か他のものを探しているときに偶然見つけました。これは質問 2 に答えるのに役立つと思います。DATABASE_CONFIGdatabase.php では、クラス /app/config/database.phpに db テーブル プレフィックスを追加できます。以下の構成配列の最後のキーを参照してください。

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'user',
    'password' => 'password',
    'database' => 'database_name',
    'prefix' => '',
);
于 2011-12-08T19:00:42.807 に答える
1

'files' や 'models' などのテーブル名を使用できないことは、経験からわかっています。なぜなら、それらは、File や Model などの他のもののために Cake によって既に使用されているクラスを作成するからです。

このような他の問題に遭遇したことはありませんが、それらは発見されるためにあると確信しています。

Cake のコア クラスで使用される名前は使用しないことをお勧めします。

于 2011-11-09T15:34:22.150 に答える
1
  1. いいえ、ありません。Cake の命名規則に従っている限り、Cake はテーブルの名前を気にしません。モデルがコントローラーによって初めてロードされるときに、魔法のモデルメソッドに使用するスキーマを生成します。指を離す必要はありません。http://book.cakephp.org/view/903/Model-and-Database-Conventionsを参照してください。

  2. 最善のアドバイス: これについて Cake と争わないでください。本当に Cake の規約を守れないのであれば、Cake を使わないほうがよいでしょう。それはばかげて難しく、混乱し、成功するということは、Cake の重い物を持ち上げる能力のほとんどを失ったことを意味します。テーブル名を複数形にすることはそれほど悪いことではなく、Cake は満足するでしょう。

  3. この機能は 1.3 で既に利用可能です - テーブルに好きな名前を付けてください (複数形である限り)。

-- コンソールでベーキング アプリをチェックして、Cake が見たいものと、さまざまなテーブル レイアウトでどのように機能するかを理解することをお勧めします。


明確化後に編集:

モデル、コントローラー、およびビュー ディレクトリはすべて、次のように共通の名前を共有します。

 // in /app/models/rate.php
class Rate extends AppModel {

     var $name = 'Rate';


// in /app/controllers/rates_controller.php -- note the underscore
class RatesController extends AppController {

    // controllers are capitalized + plural
    var $name = 'Rates';

// /app/views/rates/*.ctp 内 - Cake の魔法の autoRender は // レンダリングするアクションと同じ名前のビュー ファイルを見つけることを期待します - Rates::index() のビューは index.ctp です

すべてのモデルは、cake の AppModel クラス (cake の Model クラスを拡張する) を拡張します。プレフィックスは必要ありません。すべてのコントローラは、Cake の AppController クラスを拡張します。クラス名には Controller というサフィックスが付き、ファイル名には _Controller というサフィックスが付きます。

/app で AppModel と AppController を細かく設定できます。これらは、アプリ全体のカスタム メソッドやプロパティに対して明示的に存在します。すべてのモデル/コントローラーがそれらを拡張するため、継承は、それらに配置したプロパティ/メソッド (Auth など) を自動的に分散させます。^_^

ただし、テーブルにモデル、コントローラー、ビューなどの名前を付けることができます。$name プロパティはエイリアスです。別の名前で別名を付けることにより、同じモデル内に同じテーブルの複数のインスタンスを作成できます。テーブルなしでモデルを作成でき、1 つのモデル内で複数のテーブル (またはデータベース、またはサーバー) を切り替えることができます。モデル用にデータベース タイプ以外のデータ オブジェクト (フラット xml ファイルなど) を作成することもできます。動的に名前が付けられたクラス/メソッド ($$Model::save() など) は、内部で実行されているものです。アプリをドライアップするために、繰り返しで同様のことを行いましたが、問題はありませんでした。(個人的には、Model という名前のローカル モデルを実際にやってのけることは、実験に費やした労力に見合う価値があるとは思えませんが...)

その上で、Cake の API はすべてのクラス、メソッドなどを綴っています (コードベースのコメントから生成されます)。

http://api13.cakephp.org/classes

HTH。:D

于 2011-06-11T15:15:02.260 に答える