phalcon模型命名方式使用駝峯法,主要是用來跟數據庫交互,應用程序中的大部分業務邏輯都將集中在模型裏,l這裏把常用的模型操作做下筆記,phalcon框架的模型方式和框架提供的一些常用操作方法。
新建一個模型app/models/Rebots.php
class Rebots extends \Phalcon\Mvc\Model
{
// 官方建議在模型中預先定義好所有的列,這樣可以減少模型內存的開銷以及內存分配。
public $id;
public $name;
public $type;
public $year;
// initizelize 在請求期間僅會被自動調用一次,目的是爲模型實例進行初始化
public function initialize()
{
// setSource()方法指定數據庫表
$this->setSource('rebots');
}
/**
*
* 獲取一條記錄
* 接受關聯數組作爲查詢條件:
* @param $condition int|array 比如 id=1;
* 參數說明: 比如 array("name='張三'")
*
* @return \Phalcon\Mvc\Model 返回一個模型實例
*/
public function getFirst($condition)
{
return $this->findFirst($condition);
}
/**
* 獲取多條記錄
* 接受關聯數組作爲查詢條件:
* @param $conditoin string|array
*說明:
* 1: 沒有條件獲取所有記錄
*
* 2: 字符串 name='張三' 獲取name等於張三的記錄
*
* 3: ["id < 5", 'order' => 'id desc', 'limit' => 10]
*
* 4: 如果需要通過外部數據(比如用戶輸入)或變量來查詢記錄,
* 則必須要用`Binding Parameters`(綁定參數)的方式來防止SQL注入.
* ["id < ':id:'",
'limit' => 10,
'bind'=>5]
*
* 5:綁定參數類型
'bind' => ['id' => 5],
['bindTypes' => ['id' => \Phalcon\Db\Column::BIND_PARAM_INT]]]
* @return \Phalcon\Mvc\ResultsetInterface
*/
public function getMoreData($conditoin='')
{
return $this->find($conditoin);
}
/**
* 查詢後置方法
* 獲取記錄的初始化以及準備
* 從數據庫中獲取了一條記錄之後,自動調用,可以爲某些字段做處理
*
*/
public function afterFetch()
{
$this->name = explode(' ', $this->name);
}
// 在調用save方法之前調用
public function beforeSave()
{
$this->name = 'before Save';
}
// 在調用save方法之後調用
public function afterSave()
{
$this->name = 'after save';
}
/**
*更新數據/插入數據
*$data = array(); 需要更新的數據
*update更新數據
*save 更新/插入
*/
public function updateRecord($data=array())
{
// update方法更新一條語句,會根據id自動更新對應的紀錄
$data = array(
'id' => 9,
'name' => '張三',
'age' => '18',
'address' => 'beijing'
);
$this->update($data);
// save 方法可以更新和修改, 如果data數組中存在id,就更新,沒有id就自動插入,第二個字斷是一個數組,可以指定更新的字斷
$data = array(
'id' => 10,
'name' => '張三',
'age' => '18',
'address' => 'beijing'
);
// 插入
$this->save($data);
// 更新
$data = array(
'id' => 10,
'name' => '張三',
'age' => '18',
'address' => 'beijing'
);
$this->save($data);
}
/**
*更新前置操作
*調用update方法之前調用
*/
public function beforeUpdate()
{
}
/**
*
* 刪除一條記錄
* return bool
*/
public function deleteSecord(){
$userTest = $this->findFirst(9);
return $userTest->delete();
}
}