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()方法。