CakePHPアプリケーションを構築していて、コントローラー/モデルに関連しないMySQLテーブルがありますが、コントローラー/モデルの1つでこのテーブルからデータを挿入/更新/取得する必要があります。find
関数(SQLステートメントを記述->query
してモデルで作成できることはわかっていますが、実行したくありません)。私がウェブで見た唯一の解決策は、モデルとそのようなものを接続することでした。私の場合の解決策はありますか?
前もって感謝します!
CakePHPアプリケーションを構築していて、コントローラー/モデルに関連しないMySQLテーブルがありますが、コントローラー/モデルの1つでこのテーブルからデータを挿入/更新/取得する必要があります。find
関数(SQLステートメントを記述->query
してモデルで作成できることはわかっていますが、実行したくありません)。私がウェブで見た唯一の解決策は、モデルとそのようなものを接続することでした。私の場合の解決策はありますか?
前もって感謝します!
モデルは、有効なモデルであるためにコントローラーによって使用される必要はありません。モデル機能を使用してテーブルを操作する場合は、そのモデルを作成するか、オンザフライで使用します。
その後、関連付け (belongsTo、hasOne) を介して別のモデルからそのモデルを使用できます。または、を使用してインスタンスを作成しますClassRegistry::init('ModelName');
モデルに関連付けを必要とせず、レコードを検索するためにすばやくアクセスしたいだけの場合。呼び出すClassRegistry::init('ModelName')
と、CakePHP がモデルを自動作成します。(テーブルのCamelCaseバージョンであるModelName
必要があります。規則を参照してください)
例: データベースに という名前のテーブルがありますが、モデル ファイルdocuments
がありません。Document.php
呼び出すClassRegistry::init('Document');
と、そのテーブルのモデルがその場で作成されます。
ClassRegistry::init('Document')->find('all');
あるいは
$Document = ClassRegistry::init('Document');
$Document->find('all');
loadModel()
コントローラーでは、オンザフライでも使用できます
$this->loadModel('Document');
$this->Document->find('all');
Modelファイルを作成せずにテーブルを操作できます。
「Holidays」という名前のテーブルがある場合、コントローラーで以下のように詳細を取得できます。
$this->loadModel("Holiday");
$result = $this->Holiday->find('all');