Reputation: 19425
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
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