我写了一个sql脚本,并在其中创建了一个表; 现在我需要知道,我如何执行这个脚本? (用哪些代码?) 我有另一个问题:在哪里?我必须在哪里写这段代码?(zend项目中的哪个文件夹?) 如果你有可能请用例子来解释。谢谢
答案 0 :(得分:1)
Zend Framework不应该是创建表的人,因此,我的建议是在其他环境中运行这些脚本。 最快的可能是自己的SQL shell,但是如果你使用MySQL,你可以使用其他软件,如MySQLWorkbench。
创建表后,以这种方式访问表:
当您使用Zend Framework时,您正在使用MVC模式。我建议你阅读那是什么:Wikipedia MVC
如果您阅读维基百科链接,您现在可能已经知道,模型将对数据库进行访问。
因此,如果您遵循recommended project structure that Zend provides,则应用程序文件夹下将有 models 文件夹。在那里,您应该实现将访问数据库的类。
但是......你现在知道哪里来找到这些课程,但你会问我:怎么样?如果你知道在哪里搜索它会很容易。 ZF提供了一个名为Zend_Db_Table_Abstract的抽象类,其中包含的所有方法都可以让您的生活更轻松地与数据库表进行交互。这是您的类应该实现的类。
假设您的网站中有一个页面,您希望向该用户显示本地商店的产品列表。您的数据库中有一个名为" products"的表。您可以在其中获得所有有用的信息,例如我们的名称,价格和可用性。
您将拥有一个名为 indexAction()或 listAction()的操作的控制器,此操作已准备好将数据发送到您的视图,如下所示: / p>
class Store_ProductsController extends Zend_Controller_Action {
public function indexAction(){
//TODO: Get data from the DataBase into $products variable
$this->view->products = $products;
}
}
你的视图文件将是那个产品变量,并用它做sutff。
但是现在出现了魔法,你将会有一个可以访问数据库的课程,因为我已经说过,它会像:
class Model_Store_Products extends Zend_Db_Table_Abstract{
protected $_name = 'products';
public function getAllProducts(){
$select = $this->$select()
->from(array('P'=>$this->_name),
array('id', 'name', 'price', availability));
$productsArray = $this->fetchAll($select);
return $productsArray;
}
}
并且ta-da,您已准备好供控制器使用您的一系列产品:
class Store_ProductsController extends Zend_Controller_Action {
public function indexAction(){
$model = new Model_Store_Products();
$products = $model->getAllProducts();
$this->view->products = $products;
}
}
可以说,因为 fetchAll 是公共函数,而我们的select基本上只做了我们想要的哪些列(它们甚至没有where子句),在这种情况下,直接从控制器调用 fetchAll 会更容易,而不会在哪里恢复整个表(所有列):
class Store_ProductsController extends Zend_Controller_Action {
public function indexAction(){
$model = new Model_Store_Products();
$products = $model->fetchAll();
$this->view->products = $products;
}
}
因此,甚至不需要我们在模型中的功能。
这是如何使用Zend Framework访问数据库的基本信息。有关如何创建Zend_Db_Table_Select对象的更多信息,请参见here。
我希望这会有所帮助。