php 一个字段保存多值,php – 将所有文本字段与第一个文本字段值一起插入[多对一关系]...

简介

我想知道是否有一种方法可以在数据库的新行中保存一组文本字段,而在每一行中,第一个框的值也将一起保存.

说明

这是形式:

当用户点击保存时,应将其保存在数据库中:

我的桌面结构是

我现在在做什么?

3.1 – 在我的addNew.php(从类文件(我知道我不遵循命名约定,我的坏))在构造函数中,我得到一个来自我的控制器(addNewAction())的语言列表.

我循环遍历语言数组,并生成语言翻译的文本字段.

3.2 – 当用户点击保存时,我循环遍历文本字段,并检查语言键文本字段,并将其保存在变量中,并在每次循环浏览翻译文本字段时使用该变量

我现在的代码

4.1 – addNewAction

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(从类)

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->语言中,看起来像

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 – 将数据库重组为每种语言都是一列.

结论

我已经尝试了许多对我来说无益的事情,现在我正在做的事情使它看起来不成熟.

除此之外,我还在学习,我真的想解决这个问题,而不是重组数据库等.

注意:

请避免讨论性能,重点关注问题…

并且请更改标题,因为我确定这是不正确的方式来描述问题..或者甚至更好的建议一个..如果你发现一些不正确的技术术语,请编辑他们..谢谢:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值