帮助我,哦,Mighty Hive Mind。你是我唯一的希望。
我一直在为一个小型应用程序工作,我正在构建一个数据库(如图)。虽然我已经设法通过迭代数据来手动保存关系数据,为每个数据创建一个新模型,然后保存这些信息,我知道必须有一个比这更简洁的方法:
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";
}
为了完成这项工作,我为表facts
和keywords
之间的参考表建立了一个模型。参考表只有两列facts_id
和keywords_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
我做错了什么?