0

帮助我,哦,强大的蜂巢思维。你是我唯一的希望。

我一直在开发一个小型应用程序,用于围绕数据库构建的工作(见图)。虽然我已经设法通过迭代数据,为每个数据创建一个新模型,然后保存该信息来更多地手动保存关系数据,但我知道必须有比这更清洁的方法:

foreach($keys as $k) {
  //Build the model to associate with keyword $k
  $facts_keyword=new FactsKeyword;
  $facts_keyword['fact_id']=$model->id;
  $facts_keyword['keyword_id']=$k;
  if(!$facts_keyword->save()) //Check for errors on saving
    echo "FAILURE TO SAVE FACTS_KEYWORDS";
}

为了完成这项工作,我为表格factskeywords. 参考表只有两列facts_idkeywords_id。我正在使用 Yii 的 TokenInput 插件来输入与给定事实相关的关键字。相关视图代码在这里:

<div id="keywords" class="row">
<?php echo $form->labelEx($keyword,'keywords'); ?>
<?php $this->widget('ext.tokeninput.TokenInput', array(
    'model'=>$keyword,
    'attribute'=>'name',
    'url'=>array('keyword/searchKeys'),
    'options' => array(
        'allowCreation'=>false,
        'preventDuplicates'=>true,
        'resultsFormatter'=>'js:function(item){ return "<li><p>" + item.name + "</p></li>" }',
        'prePopulate'=>$key,
        'theme'=>'facebook',
        'minChars'=>2,
    )
)); ?>
<?php echo $form->error($keyword,'name'); ?>
</div>

事实模型的关系如下所示:'keywords' => array(self::MANY_MANY, 'Keyword', 'facts_keywords(fact_id, keyword_id)')'

如何以更简洁的方式保存视图中的信息?我试图更改'model'=>$keyword'model'=>$fact并更改'attribute'=>'name''attribute'=>'sources'这给出了这个错误:trim() expects parameter 1 to be string, array given我做错了什么?

4

1 回答 1

0

只需使用此扩展名:activerecord-relation-behavior

于 2013-09-04T08:55:35.873 回答