- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想知道是否有一种方法可以将一组文本字段保存在数据库中的一个新行中,并且在每个文本字段中,第一个框的值也将与其一起保存。
这是表格:
当用户点击保存时,它应该在数据库中保存为:
我的表结构是
3.1 - 在我的addNew.php
(来自类文件(我知道我没有遵循命名约定,我的错)的构造函数中,我从我的 Controller 中获得了一个语言列表( addNewAction()
).
我遍历语言数组并生成用于语言翻译的文本字段。
3.2- 当用户点击保存时,我循环遍历文本字段并检查语言键文本字段并将其值保存在一个变量中,并在每次循环遍历翻译文本字段时使用该变量
4.1 - 添加新 Action
public function addNewAction()
{
// to add new key and translation associated with it
// an array of optnions which cotains list of languages
$options = $this->getAllLanguages();
$form = $this->createForm(new AddNew($options));
$form->bind($this->getRequest());
if ($form->isValid()) {
foreach($form->getData() as $key => $value){
$oTranslation = new Translations();
if($key == 'languageKey'){
$languageKey = $value;
continue;
}
$locale = $key;
$translation = $value;
$language = $this->getDoctrine()
->getRepository('CodeizSDBTranslatorBundle:Languages');
$query = $language->createQueryBuilder('l')
->select('l.id')
->where('l.locale = :locale')
->setParameter('locale' , $locale)
->getQuery();
$id = $query->getResult();
$oTranslation->setLanguageId($id[0]['id']);
$oTranslation->setLanguageKey($languageKey);
$oTranslation->setTranslation($translation);
$em = $this->getDoctrine()->getManager();
$em->persist($oTranslation);
$em->flush();
}
return $this->redirect($this->generateUrl('codeiz_sdb_translator_addlanguagekey'));
}
return $this->render('CodeizSDBTranslatorBundle:Default:addNewKey.html.twig', array(
'form' => $form->createView(),
));
}
4.2 - addNew.php(来自类)
<?php
namespace Codeiz\SDBTranslatorBundle\Form\Add;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class AddNew extends AbstractType
{
private $languages;
public function __construct($languages){
$this->languages = $languages;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('languageKey');
foreach ($this->languages as $key => $value) {
$builder->add($value['locale'] , 'text' , array('label'=>$value['description']) );
}
}
public function getName()
{
return 'addnew';
}
}
4.3 - 这是我传递给表单以生成文本字段的数组,它存储在 $this->languages
中,看起来像
Array
(
[0] => Array
(
[id] => 1
[locale] => en_US
[description] => English - United States
)
[1] => Array
(
[id] => 2
[locale] => fr_FR
[description] => Frenish
)
)
这些是我认为我可以解决的问题:
5.1- 使用我的代码 BLAH。
5.2- 重构数据库,使每种语言都是一列。
我已经尝试了很多对我来说都没有成功的事情,而我现在做这件事的方式让它看起来不成熟。
除此之外,我还在学习,我真的很想按原样解决这个问题,而无需重构数据库等。
请避免讨论性能,将注意力集中在问题上......请更改标题,因为我确定这不是描述问题的正确方法.. 或者更好地建议一个.. 如果您发现一些不正确的技术术语,请编辑它们.. 谢谢 :)
最佳答案
下面的代码具有与您的类似的形式,并为每个翻译写出 SQL 选择/插入语句。注意,SELECT 需要将 ID 传递到第二个查询(值中表示 languageid 的部分),因为您需要根据语言名称从数据库中获取 ID。
<?php
echo '<form method="post">
<input type="text" name="LanguageKey" value="_hello"/>
<input type="text" name="EnglishUS" value="sup"/>
<input type="text" name="French" value="bon"/>
<input type="submit" value="Submit"/>
</form>';
print_r($_POST);
echo "<br />\n";
foreach ($_POST as $key => $val)
{
if ($key != 'LanguageKey')
{
echo $key.': '.$val."<br />\n";
echo "SELECT id FROM Languages where description = '$key'<br />\n";
echo 'INSERT INTO translation (LanguageId,LanguageKey,Translation) VALUES (\'languageid\',\''.$_POST['LanguageKey'].'\',\''.$val.'\')'."<br />\n";
}
}
?>
结果:
关于php - 将所有文本字段与第一个文本字段值一起单独插入 [多对一关系],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094542/
我有一个 ProductDescription ViewController,它从我放置在许多 ViewController 中的 ProductTable UITableView 调用。 对于 St
首先,是的,我使用的是 DistinctRootEntityResultTransformer。 我有以下(Fluent NHibernate)映射: public FirstObjectMap()
我有两个模型:Book 和 Author。每个Author有很多本书,每本书有很多作者,所以我在Author和Book之间建立了ManyToMany关系,如下所示: class Author(mode
我正在尝试映射两个具有一对一关系的类之间的关系。在互联网上查找后,似乎人们更喜欢使用多对一来映射它。 例如,有一个 Order 类和 Bill 类。比尔持有发票的 FK。 这是我为比尔绘制的 map
假设有以下实体类: public class Player { public virtual int ID { get; set; } public virtual string Name { g
我想尝试一下 dynamodb 我能够保存单个对象。现在我想尝试创建一个多对一的关联。 许多任务应附加到单个用户。 @DynamoDBTable(tableName = "User") public
所以,情况如下: 表ComputerInventory,其中包含{computerInventoryID(主键)、TagID(唯一)、名称等} 表reviewStatus,其中包含{reviewSta
我在使用 hibernate 进行多对一映射时遇到问题。我有两个表,表 A 和表 B。我在这些表之间映射了多对一关系。两个表可以一起使用,也可以单独使用。 用 Java 中的类来表示表,例如: cla
我的实体: @Entity public class Film { @Id @GeneratedValue(strategy = IDENTITY) private long film
我必须制作拼贴项目的域层。我们的标准很少,比如我们必须使用 Hibernate,而且数据库也是固定的。 数据库的相关部分看起来几乎像这样: BusEntity(表 1) 总线 ID 公交车具体信息 总
如果有这两个实体: @Entity @Table(name = "CUSTOMER") public class Customer { @Id @GeneratedValue(stra
我正在尝试找出在多对一关系中检索单个最新结果的最有效方法。 示例: 实体 A - 团队(名称)实体 B - 员工(姓名,已创建) 团队>员工 我想在 Employee 上创建一个获取请求,返回每个团队
假设我有一个MySQL表read,记录了一个userid和一个articleid,记录了用户阅读了哪些文章。我现在想列出已阅读文章 1、2 和 3 的用户。 我知道以下是不可能的,但它说明了这个想法:
我的两个实体之间存在多对一关系。现在我希望当没有更多的 child 时将 parent 移除。 我的情况: 类(class)联系人 类(class)组织 一个组织有几个联系人,每个联系人都有一个组织。
我有下表: A 和 B A 有一个复合 PK:id int,类型 string。 B 只有 A 的 PK 之一:id int。 如何使用 B 的 id 和常量 type='typeB' 定义从 A 到
我正在为我的项目使用 Hibernate 3 映射一些实体,并简单地解释说我有这样的东西: Student 实体(tstudent 表) UniversityStudent 实体(tuniversit
我有一个成员表:成员(id, name, gender, head_id) 我想要的是建立以户主(家庭成员)为基础的家庭关系。就像这样:一个成员属于一个家庭(由成员定义) 也许我可以将其拆分为 2 个
示例 父类 @OneToMany(mappedBy = "parent") private List childs; 子类 @ManyToOne(cascade = CascadeType.ALL)
我有以下化学过程数据集,由 5 个连续输入向量组成,产生 1 个输出。每个输入每分钟采样一次,而输出操作系统每 5 采样一次。 虽然我相信输出取决于之前的 5 个输入向量,但我决定为我的设计寻找 LS
我正在将我的应用程序从原则 1 转换为原则 2.4我确实从数据库自动映射,但缺少一些关系: 表:产品产品 ID、标题、价格 表:位置产品id , 产品id , 位置id , 数量 因此每个 Locat
我是一名优秀的程序员,十分优秀!