我使用PHP Yii Framework和MongoDB(yiimongodbsuite)。我創建了一個從EMongoDocument擴展的模型。YII中的setAttribute()函數無法正常工作
<?php
class MyModel extends EMongoDocument
{
public $attr1;
public $attr2;
// rules, custom validations and other functions....
public function setAttributes($values, $safeOnly=true)
{
if(!is_array($values))
return;
if($this->hasEmbeddedDocuments())
{
$attributes=array_flip($safeOnly ? $this->getSafeAttributeNames() : $this->attributeNames());
foreach($this->embeddedDocuments() as $fieldName => $className)
if(isset($values[$fieldName]) && isset($attributes[$fieldName]))
{
$this->$fieldName->setAttributes($values[$fieldName], $safeOnly);
unset($values[$fieldName]);
}
}
parent::setAttributes($values, $safeOnly);
}
}
在控制器,
$dataModel = new MyModel();
$dataModel->setAttributes($_POST['MyModel']);
if($dataModel->validate()){
$dataModel->save();
}
上面的代碼不設置屬性值。 請讓我知道是否有任何錯誤。
你有沒有在安全列表中的屬性?如果您調試代碼,無法設置 - >屬性? – Pentium10
@ Pentium10這些屬性不僅是字符串,而且也是數組格式...並且它無法設置屬性,但在調用save()方法時沒有給出任何錯誤。但數據未保存在數據庫中。 –
您需要調試,然後在調用保存之前查看屬性中是否有值。 – Pentium10