我正在开发一个网络地图平台,它是关于地中海的地理定位数据(例如盐度,pH值,pCO2等......)来自突尼斯,马赛和热那亚之间的船只。
从海中检索的参数(盐度,pH值)的名称可能会根据字典而改变,但值仍然相同(ofc)。
所以我想要做的是在保存参数名称和词典之后,我想选择一个字典在应用程序中作为全局使用,应用程序中显示的所有数据必须在从所选择的参数名称下查找字典。
我想在标题中添加一个ChoiceType表单,我将选择所需的字典并在整个应用程序中使用。所选词典将在数据库中保存为已启用。
问题是,最好的方法是什么?
以下是我的实体:
字典
/**
* ParamDictionary
*
* @ORM\Table(name="param_dictionary")
* @ORM\Entity(repositoryClass="AdminBundle\Repository\ParamDictionaryRepository")
*/
class ParamDictionary
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45)
*/
private $name;
参数名称
/**
* ParamName
*
* @ORM\Table(name="param_name")
* @ORM\Entity(repositoryClass="AdminBundle\Repository\ParamNameRepository")
*/
class ParamName
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=10)
*/
private $name;
/**
* @var ParamReference
*
*@ORM\ManyToOne(targetEntity="AdminBundle\Entity\ParamReference")
* @ORM\JoinColumn(name="ref_id", referencedColumnName="id")
*/
private $reference;
/**
* @var ParamDictionary
*
* @ORM\ManyToOne(targetEntity="AdminBundle\Entity\ParamDictionary")
* @ORM\JoinColumn(name="dictionary_id", referencedColumnName="id")
*/
private $dictionary;
参数参考
/**
* ParamReference
*
* @ORM\Table(name="param_reference")
* @ORM\Entity(repositoryClass="AdminBundle\Repository\ParamReferenceRepository")
*/
class ParamReference
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $description;
参数值
/**
* ParamValue
*
* @ORM\Table(name="param_value")
* @ORM\Entity(repositoryClass="AdminBundle\Repository\ParamValueRepository")
*/
class ParamValue
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="value", type="decimal", precision=16, scale=8)
*/
private $value;
/**
* @var Meas
*
* @ORM\ManyToOne(targetEntity="AdminBundle\Entity\Meas")
* @ORM\JoinColumn(name="meas_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $meas;
/**
* @var ParamName
*
* @ORM\ManyToOne(targetEntity="AdminBundle\Entity\ParamReference")
* @ORM\JoinColumn(name="ref_id", referencedColumnName="id")
*/
private $reference;
地理定位数据点
/**
* Meas
*
* @ORM\Table(name="meas")
* @ORM\Entity(repositoryClass="AdminBundle\Repository\MeasRepository")
*/
class Meas
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="date_time", type="datetime")
*/
private $date_time;
/**
* @var string
*
* @ORM\Column(name="latitude", type="decimal", precision=16, scale=8)
*/
private $latitude;
/**
* @var string
*
* @ORM\Column(name="longitude", type="decimal", precision=16, scale=8)
*/
private $longitude;