Steven
Steven

Reputation: 19425

Why do I get "Illegal string offset 'name'" error in Yii?

I'm new at Yii and I'm trying to insert some sample data.

in my /model/Store.php file I have the following code:

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();
    }

}

When I run the page / function, I get the error:

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

Can anyone tell me what I'm doing wrong here?

Upvotes: 1

Views: 7409

Answers (1)

Ares Draguna
Ares Draguna

Reputation: 1661

You get this because in your foreach, name is not an offset.

To solve this:

$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"),
    ];

each individual line must be an array so on foreach($dataArray as $data ), $data will be an array, and not a result.

Hope it helps!
Keep on coding!
Ares.

Upvotes: 5

Related Questions