2014-10-23 2 views
1

Я новичок в Yii, и я пытаюсь вставить некоторые данные образца.Почему я получаю ошибку «Недопустимое смещение строки» в Yii?

в моем файле /model/Store.php У меня есть следующий код:

class Store extends CActiveRecord { 

public function rules() 
{ 
    return array(
     array('name, status', 'required'), 
(...) 

public function attributeLabels() 
{ 
    return array(
     'name' => 'Name', 

(...) 

public function insertSampleData(){ 
    $dataArray = [ 
     "name" => "Test store ", "fk_adr" => "4117", 
     "name" => "Test store ", "fk_adr" => "4126", 
     "name" => "Test store ", "fk_adr" => "4140", 
     "name" => "Test store ", "fk_adr" => "4150", 
     "name" => "Test store ", "fk_adr" => "4167", 
    ]; 

    $num = Yii::app()->db->getLastInsertID(); 
    foreach($dataArray as $data){ 
     $num++; 
     $store = new self; 
     $store->name = $data['name'].$num; 
     $store->fk_addressID = $data['fk_adr']; 
     $store->save(); 
    } 

} 

При запуске страницы/функции, я получаю ошибку:

PHP warning
Illegal string offset 'name'
$store->name = $data['name'].$num;

Может кто-нибудь сказать мне, что я здесь делаю неправильно?

+0

является то, что правильно, что нет котировка после имени в: массив («имя, статус», «требуется») –

ответ

5

Вы получаете это, потому что в вашем foreach имя не является смещением.

Чтобы решить эту проблему:

$dataArray = [ 
     0 => array("name" => "Test store ", "fk_adr" => "4117"), 
     1 => array("name" => "Test store ", "fk_adr" => "4126"), 
     2 => array("name" => "Test store ", "fk_adr" => "4140"), 
     3 => array("name" => "Test store ", "fk_adr" => "4150"), 
     4 => array("name" => "Test store ", "fk_adr" => "4167"), 
    ]; 

каждая отдельная строка должна быть массив так далее foreach($dataArray as $data), $data будет массив, а не результат.

Надеюсь, это поможет!
Продолжайте кодирование!
Ares.

+0

Doh ... Я просто пойду прячу голову в песок где-нибудь: D – Steven

+0

:)) Не беспокойтесь! Рад помочь: D –

Смежные вопросы