2013-09-23 59 views
1

我有2班 「users」 和 「userName如何保存嵌入文檔中的Yii的MongoDB套房

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

+1

如果您搜索本網站,我記得同一個標題 – Sammaye

+0

賞金問題檢查此問題http://stackoverflow.com/questions/17760038/upsert-embedded-document-in-yiimongodbsuite – 2013-09-24 09:44:05

回答

0

你有最大長度爲name屬性的驗證規則。此規則使用功能mb_strlen。但由於某種原因,你寫了$u->name[0] = new UserName(),所以你name屬性成爲一個數組,但不是一個字符串。這就是原因。