1

我有 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',
    );
}
}

我有代码:

在此处输入图像描述

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

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

在此处输入图像描述

4

1 回答 1

0

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

于 2013-10-15T11:02:53.540 回答