2015-01-08 108 views
0

我有两个表:productfilters和productfiltervalues。WPMVC:给定多个记录,数据库中只保存一个记录集

在第一个表我有一个像,书籍,电子记录,服装等

在第二个表,有相关的在第一表中的记录,即,当我们编辑书籍,我们可以添加值的记录动态的,被'书籍'的'id'所引用,如'小说','历史','诗歌'等。同样,我们也有'电子'和'服饰'的不同数据。

现在,当我一次编辑两个表并将它们保存为一次单击时,第一个表记录将保存为我希望的状态,但第二个表记录被截断并且最后一组记录保存在数据库中。

对于这种功能,我已经覆盖了管理控制器方法'create_or_save()',这会造成麻烦。我已经给出了下面的代码。

任何帮助,非常感谢。谢谢。

if ($this->model->create($this->params['data'])) { 
    $id = $this->model->insert_id; 
    $this->load_model('ProductFilterValue'); 
     if(isset($this->params['data'][$this->model->name]['productfiltervalues']) && !empty($this->params['data'][$this->model->name]['productfiltervalues'])){ 
      foreach($this->params['data'][$this->model->name]['productfiltervalues'] as $productfiltervalue){ 
       $productfiltervalue['group_id'] = $id; 
       $this->ProductFilterValue->save($productfiltervalue); 
       } 
      } 

我已经添加了两个截图来理解这一点。 1.添加2.编辑

Records are added here

Edit to see the database

只添加最后一个记录。如何解决这个问题?任何疯狂的猜测?谢谢..

+0

也许某些代码可能会有所帮助。 – vaso123

回答

0

你的问题是在这里:

$this->ProductFilterValue->save($productfiltervalue); 

所以while循环,你只是替换值(我认为), 它必须是这样的:

$this->ProductFilterValue->add($productfiltervalue); 

我不是WP专家,并且现在没有安装WP,只是为了帮助你解决这个问题。 希望可以帮到你

+0

感谢Kim的回复,但'add'也只会调用create_or_save()方法。我几乎可以找到它。很快会回来的答案。再次感谢。 –

+0

可以在foreach之前做'var_dump($ this-> params ['data'] [$ this-> model-> name] ['productfiltervalues'])'吗? – Alex

+0

谢谢Kim。我解决了这个问题检查答案。 –

0

我解决了这个问题。我在添加/编辑表单的常见部分布局中给出了下面的代码。

var clone =''; 

     if(jQuery('.filter-input-html:first').length > 0) 
     { 
      clone = jQuery('.filter-input-html:first').clone();  
     } 
     else 
     { 
      clone = html; 
     } 

     jQuery("#filter-value").append(clone); 
     filter_value_row++; 

并且这导致了错误。

我只是全部,如果条件取出,并用

clone = html; 

取代它,现在它工作正常。谢谢。