2011-05-03 63 views
3

我創建了一個註冊表單並將數據發送到控制器。如何在CakePHP控制器中使用多個模型

我想這個數據插入到3個不同的表(型號)。

這是如何實現的?

+0

使用存儲過程。 – 2011-05-03 12:12:35

+5

^^ -1使用存儲過程進行數據操作是非常錯誤的。你不應該在持久層中做業務邏輯。我知道在SQL中完全實現了大量的傳統應用程序,但這顯然是錯誤的。 DB只是一個存儲庫,將它作爲一個存儲庫使用。 – sibidiba 2011-05-03 13:13:02

+1

問題是CakePHP相關,所以存儲過程不適用,因爲您可以在模型中包含邏輯 - 甚至複雜的邏輯 - 。 MVC的* M *部分。 – Oerd 2011-05-03 15:43:27

回答

0

只要您的表單根據CakePHP約定格式化並且模型之間的關係將被正確設置,那麼當您調用$this->Model->save($this->data)時,這將自動完成。

18

你是什麼意思(用CakePHP的術語來說)是你想要使用更多的模型比默認的。默認模型就像你的控制器那樣命名。

達到你想要你只是聲明一個變量$uses在控制器什麼。它的完成是這樣的:

<?php 
class ExampleController extends AppController { 
    var $name = 'Example'; 

    // $uses is where you specify which models this controller uses 
    var $uses = array('Model1', 'Model2', 'ModelN'); 

    // ... here go your controller actions (methods) 

} 
?> 

這將使你的控制器使用Model1Model2ModelN。重命名這些並根據您的需求添加更多。

如果你不希望在你的控制器使用的模型,您可以指定$uses爲一個空數組,即:

var $uses = array(); 

看看相應的CakePHP的書籍章節根據你的版本使用:

0

這實際上是最好的loade上飛作爲這樣你不會加載它,你可能並不需要的所有方法的模型。

$this->loadModel('Model1'); 

方式更有效率。

我也建議確保這些表沒有聯繫。如果他們是那麼它最好通過連鎖它們通過:

$this->Model1->Model2->find(); 

這是教你要通過中容納和關係表(的hasMany,屬於關聯,HABTM)更高效的開始

相關問題