我对员工有一个计数器,这样当对员工提出投诉时,该计数器会减少1。
每个员工都以10个令牌开头。
我在投诉页面上进行了处理,以便在创建投诉时,令牌计数减少1。
我的数据库中有一个表,其中有employee_id
及其token count
。
此表显示在顶点交互式报告中。
问题在于,即使雇员的代币计数为0,雇主仍然可以对其进行投诉。
我要会在投诉创建表单中显示错误,阻止他们提出投诉,直到该员工拥有超过0个令牌为止。 (因此,当雇主试图提交投诉表时,就会出现错误)
答案 0 :(得分:0)
如果您要求始终在报告中显示零或更大的数字,则可以使用 /**
* @ORM\Column(type="decimal", precision=3, scale=2)
*/
private $contenance;
/**
* @ORM\Column(type="decimal", precision=3, scale=2)
*/
private $prix;
:
Oracle设置:
<?php
namespace App\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
final class ProduitAdmin extends AbstractAdmin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('titre', TextType::class);
$formMapper->add('millesime', TextType::class);
$formMapper->add('cepage', TextType::class);
$formMapper->add('appellation', TextType::class);
$formMapper->add('description', TextType::class);
$formMapper->add('contenance', NumberType::class, ['scale' => 3]);
$formMapper->add('prix', MoneyType::class, ['scale' => 3]);
$formMapper->add('classe', TextType::class);
}
查询:
GREATEST( token, 0 )
输出:
ID | TOKEN -: | ----: 1 | 10 2 | 3 3 | 0 4 | 0 5 | 0
db <>提琴here
答案 1 :(得分:0)
我认为,实际上,提交投诉后最好为您提供服务。 投诉后,进行验证运行,检查员工是否有代币,如果他的代币<= 0,则弹出错误。 验证可以像这样
DECLARE
s_tokens NUMBER;
b BOOLEAN;
BEGIN
BEGIN
SELECT token_count
INTO s_tokens
FROM token_table
WHERE employee_id = :EMPLOYEE_ID -- taken from the active complaint form
IF s_tokens <= 0 THEN
b := FALSE;
ELSE
b := TRUE;
END IF;
EXCEPTION
WHEN others THEN -- to catch if the employee is not in the table or if anything else messes up
b := FALSE;
END;
RETURN b;
END;
这是一个非常基本的验证,您可以对其进行很多改进,但对于初学者来说应该可以使用。 设置验证以执行返回布尔值的plsql代码,然后可以将错误文本更改为所需的任何内容。