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');