Model:
表與表之間的關係:
hasOne 一對一( $fields, $referenceModel, $referencedFields : 當前表中的欄位, 對應關係模型, 對應關係模型中表的字欄位 )
hasMany 一對多 ( $fields, $referenceModel, $referencedFields : 當前表中的欄位, 對應關係模型, 對應關係模型中表的字欄位 )
hasManyToMany 多對多
belongsTo 多對一( 屬於 ) ( $fields, $referenceModel, $referencedFields : 當前表中的欄位, 對應關係模型, 對應關係模型中表的字欄位 )
*********** 如專案中存在名稱空間 則 要在對應的關係中新增alias引數 array( 'alias' => 'namespace' )
$this->hasMany( 'id', 'Mp\pri\models\RolesUsers' , 'roleid', array( 'alias' => 'rolesusers' ));
$this->hasMany( 'id', 'Mp\pri\models\RolesMenus' , 'roleid', array( 'alias' => 'rolesmenus' ));
Phalcon中設定允許資料動態更新:( 初始化的時候 )
$this->useDynamicUpdate( true );
Phalocn中設定軟刪除標記:( 初始化的時候 )
use Phalcon\Mvc\Model\Behavior\SoftDelete;
$this->addBehavior( new SoftDelete(
array(
'field' => 'delsign',
'value' => SystemEnums::DELSIGN_YES,
)
) );
$res = Roles::findFirst( $where )->delete();
//當判斷是否刪除成功與否
if( empty( $res ) )
{//delete error
}
else
{//delete success
}
專案多模組並存在有命名:(跨模組取資料)
因類存在名稱空間問題 如果儲存成物件, 在取出資料的時候因存在名稱空間限制 會取不到session中的資料 ------ 解決方法 將資料儲存成陣列存入session中
Phalcon 新增/更新資料:
$id = $this->request->getPost('id');
if( isset( $id ) && FALSE != $id ) {
$where = array(
'conditions' => 'delsign=:del: and id=:optid:',
'bind' => array( 'del' => SystemEnums::DELSIGN_NO,'optid' => $id ),
);
$cache = Cache::findFirst( $where );
$cache->delsign = SystemEnums::DELSIGN_YES;
$cache->modtime = TimeUtils::getFullTime();
$cache->title = 'Login';
$cache->action = 'loadding';
$cache->seconds = 100;
$cache->module_name = 'appmgr';
}
//add
else {
$cache = new Cache();
$cache->title = 'Roles';
$cache->module_name = 'pri';
$cache->controller = 'Roles';
$cache->action = 'list';
$cache->seconds = 20;
$cache->comment = 'Add Test';
$cache->createtime = TimeUtils::getFullTime();
$cache->modtime = TimeUtils::getFullTime();
$cache->delsign = SystemEnums::DELSIGN_NO;
}
if (! $cache->save()) {
foreach ($cache->getMessages() as $message) {
echo "Message: ", $message->getMessage();
echo "Field: ", $message->getField();
echo "Type: ", $message->getType();
}
}
else {
echo 'No Error';
}
exit;
採用PHQL方式更新資料:
$query = $this->modelsManager->createQuery( 'update \Mp\sys\Models\Cache set title =:tit:,modtime=:time: where id = :id:' );
$res = $query->execute(array(
'tit' => $cache_name,
'id' => $id,
'time' => TimeUtils::getFullTime(),
));