php - 如何在 phalcon 中获取具有最大列值的记录?
问题描述
我正在尝试获取具有最大faq_order
列的行/记录。
场景:我有一个表faq_category
,它包含一个字段faq_order
。FAQ_ORDER列负责存储订单号。
在faq_category
我想设置新记录时,faq_order
它应该具有最新的价值。即假设是否有 2 条先前的记录,以便记录的 faq_order 值分别为 1、2!现在在第三条新记录上,它应该将faq_order设置为 3,但我尝试了下面的代码,但没有找到合适的方法。
保存功能:
public function saveGeneralFaqCategoryAction(){
// Instantiate new form for EbFaqCategoryModel
$form = new EbFaqCategoryForm();
if( $form ->isValid($this->request->getPost())){
// Get the FAQ Category id (if any)
$id = $this->request->get( 'id', null );
// Get existing FAQ Category (if any) or create a new one
if( null !== $id && $id !== '' ) {
$faqCategory = EbFaqCategoryModel::findFirst( $id );
} else {
// Here we create new instance and I'm stuck here!
// Logic in my mind is get max order and +1 it and then save it
// in new instance
$faqCategory = new EbFaqCategoryModel();
//$maxOrder = EbFaqCategoryModel::get();
$faqCategory->setFaqOrder(); // On new I want to set max value
}
// Bind form with post data
$form->bind( $this->request->getPost(), $faqCategory );
$faqCategory->save();
} else {
// Send error Json response
return CxHelper::SendJsonError($form->getHtmlFormattedErrors());
}
// Return success
return array( 'data' => 'Success' );
}
模型:
/**
* Get Current Max Order
*
* @return array
*/
public static function getCurrentMaxOrder(){
$queryBuilder = new Builder();
return $queryBuilder
->from(array('c' => static::class))
->columns('c.*')
->where('c.faq_order', MAX) // HERE I want to get a Record having faq_order max
->orderBy("c.date_created desc")
->getQuery()
->execute()->setHydrateMode(Resultset::HYDRATE_ARRAYS)
->toArray();
}
解决方案
您应该使用 ORM 聚合函数:https ://docs.phalconphp.com/3.2/en/db-models#generating-calculations
这是一种方法:
function beforeValidationOnCreate()
{
$this->faq_order = \YourModelClassame::maximum([
'column' => 'faq_order'
]) + 1;
}
这样,当您从该表创建记录时,它将始终具有最高faq_order
值:)
推荐阅读
- python-2.7 - Sublime text 2 找不到任何python模块
- android - 将图像、视频上传和下载到 Android 应用程序的 Firebase 存储太慢
- reactjs - React Router:返回特定页面
- boost - 如何一次更新提升符号链接?
- javascript - 如何防止 Vue 引导表在页面缩放时变形/调整大小?
- java - 如何测试从数据库读取并写入文件的弹簧批处理步骤?
- android - 我怎样才能复制这种行为?
- python-3.x - InvalidArgumentError 带有 keras 的情绪分析器
- python - 为什么加载到 numpy 时磁盘上大小为 9 MB 的图像在 RAM 中占用 125 MB?
- go - Hugo定义非站点级变量/参数查询