Phalcon7 模型的創(chuàng)建

2018-10-21 07:14 更新

Phalcon帶來的第一個完全用C語言編寫的PHP ORM。它簡化了開發(fā), 而不是增加了開發(fā)的復(fù)雜性。

創(chuàng)建我們的第一個模型之前,我們需要在Phalcon以外創(chuàng)建一個數(shù)據(jù)庫表。一個用來存儲注冊用戶的簡單表,可以這樣定義:

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(70) NOT NULL,
  `email` varchar(70) NOT NULL,
  PRIMARY KEY (`id`)
);

模型應(yīng)該位于 app/models 目錄 (app/models/Users.php). 這個模型對應(yīng)“users”表:

<?php

use Phalcon\Mvc\Model;

class Users extends Model
{
    public $id;

    public $name;

    public $email;
}

設(shè)置數(shù)據(jù)庫連接

為了能夠使用一個數(shù)據(jù)庫連接,然后通過我們的模型訪問數(shù)據(jù),我們需要在我們的引導(dǎo)過程指定它。數(shù)據(jù)庫連接是我們的應(yīng)用程序可以使用的數(shù)個組件中的另一個服務(wù):

<?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();
}

使用正確的數(shù)據(jù)庫參數(shù),我們的模型已經(jīng)準備和應(yīng)用程序的其余部分工作。

使用模型保存數(shù)據(jù)

下一個步驟是從表單接收數(shù)據(jù)存儲在表中。

<?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();
    }
}

然后我們實例化用戶類,它對應(yīng)于一個用戶記錄。類的公共屬性映射到用戶表中的記錄的字段。在新記錄中設(shè)置相應(yīng)的值并調(diào)用save()將在數(shù)據(jù)庫中存儲的數(shù)據(jù)記錄。save()方法返回一個布爾值,表示存儲的數(shù)據(jù)是否成功。

ORM自動轉(zhuǎn)義輸入以防止SQL注入,所以我們只需要將請求傳遞給save()方法。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號