Phalcon7 模型的创建
Phalcon带来的第一个完全用C语言编写的PHP ORM。它简化了开发, 而不是增加了开发的复杂性。
创建我们的第一个模型之前,我们需要在Phalcon以外创建一个数据库表。一个用来存储注册用户的简单表,可以这样定义:
CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(70) NOT NULL, `email` varchar(70) NOT NULL, PRIMARY KEY (`id`) );
模型应该位于 app/models 目录 (app/models/Users.php). 这个模型对应“users”表:
<?php use Phalcon\Mvc\Model; class Users extends Model { public $id; public $name; public $email; }
设置数据库连接
为了能够使用一个数据库连接,然后通过我们的模型访问数据,我们需要在我们的引导过程指定它。数据库连接是我们的应用程序可以使用的数个组件中的另一个服务:
<?php try { $loader = new Phalcon\Loader(); $loader->registerDirs(array( '../app/controllers/', '../app/models/' ))->register(); $di = new Phalcon\FactoryDefault(); $di->set('db', function () { return new Phalcon\Db\Adapter\Mysql(array( "host" => "localhost", "username" => "root", "password" => "secret", "dbname" => "test_db" )); }); $di->set('view', function () { $view = new Phalcon\Mvc\View(); $view->setViewsDir('../app/views/'); return $view; }); $di->set('url', function () { $url = new Phalcon\Mvc\Url(); $url->setBaseUri('/tutorial/'); return $url; }); $application = new Application($di); echo $application->handle()->getContent(); } catch (\Exception $e) { echo "Exception: ", $e->getMessage(); }
使用正确的数据库参数,我们的模型已经准备和应用程序的其余部分工作。
使用模型保存数据
下一个步骤是从表单接收数据存储在表中。
<?php use Phalcon\Mvc\Controller; class SignupController extends Controller { public function indexAction() { } public function registerAction() { $user = new Users(); // Store and check for errors $success = $user->save($this->request->getPost(), array('name', 'email')); if ($success) { echo "Thanks for registering!"; } else { echo "Sorry, the following problems were generated: "; foreach ($user->getMessages() as $message) { echo $message->getMessage(), "<br/>"; } } $this->view->disable(); } }
然后我们实例化用户类,它对应于一个用户记录。类的公共属性映射到用户表中的记录的字段。在新记录中设置相应的值并调用save()将在数据库中存储的数据记录。save()方法返回一个布尔值,表示存储的数据是否成功。
ORM自动转义输入以防止SQL注入,所以我们只需要将请求传递给save()方法。