php - 在 Yii MongoDB套件中,如何保存嵌入文档

  显示原文与译文双语对照的内容
0 0

我有 2类" users"和 userName"


class users extends EMongoDocument {

public $name;
public $address;

public static function model($className = __CLASS__) {
 return parent::model($className);
}

//This method is required!
public function getCollectionName() {
 return 'users';
}

public function getMongoDBComponent() {
 return Yii::app()->mongodb;
}

public function behaviors() {
 return array(
 array(
 'class' => 'ext.YiiMongoDbSuite.extra.EEmbeddedArraysBehavior',
 'arrayPropertyName' => 'name',//name of property
 'arrayDocClassName' => 'userName'//class name of documents in array
 ),
 );
}

public function rules() {
 return array(
 array('name, address', 'required'),
 array('name, address', 'length', 'max' => 255),
 );
}

public function attributeLabels() {
 return array(
 'name' => 'Full name',
 'address' => 'Address',
 );
}
}



class userName extends EMongoEmbeddedDocument {

public $firstname;
public $middlename;
public $lastname;

public static function model($className = __CLASS__) {
 return parent::model($className);
}

//This method is required!
public function getCollectionName() {
 return 'userName';
}

public function rules() {
 return array(
 array('firstname, middlename,lastname', 'required'),
 array('firstname, middlename,lastname', 'length', 'max' => 255),
 );
}

public function attributeLabels() {
 return array(
 'firstname' => 'First Name',
 'middlename' => 'Middle Name',
 'lastname' => 'Last Name',
 );
}
}

我有密码:

enter image description here

无法保存嵌入文档。 我有一个错误:


mb_strlen() expects parameter 1 to be string, array given

enter image description here

时间: 原作者:

0 0

你有 name 属性的最大长度验证规则。 这里规则使用函数 mb_strlen 。 但由于某种原因你写了 $u->name[0] = new UserName() 因此,name 属性成为 array,而不是字符串。 那就是原因。

原作者:
...