2

CakePHPアプリケーションを構築していて、コントローラー/モデルに関連しないMySQLテーブルがありますが、コントローラー/モデルの1つでこのテーブルからデータを挿入/更新/取得する必要があります。find関数(SQLステートメントを記述->queryしてモデルで作成できることはわかっていますが、実行したくありません)。私がウェブで見た唯一の解決策は、モデルとそのようなものを接続することでした。私の場合の解決策はありますか?

前もって感謝します!

4

2 に答える 2

9

モデルは、有効なモデルであるためにコントローラーによって使用される必要はありません。モデル機能を使用してテーブルを操作する場合は、そのモデルを作成するか、オンザフライで使用します。

その後、関連付け (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');
于 2012-12-28T22:44:06.643 に答える
0

Modelファイルを作成せずにテーブルを操作できます。

「Holidays」という名前のテーブルがある場合、コントローラーで以下のように詳細を取得できます。

$this->loadModel("Holiday");
$result = $this->Holiday->find('all');
于 2017-12-18T10:08:29.497 に答える