Я пытаюсь получить строку / запись, имеющую столбец max 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();
}