Reputation: 2206
How to create a model which is have a default value from another array.
I mean, if I have an array like this :
[
0 => [
'remarks' => 'ACETONE - '
'material' => '70.00'
]
1 => [
'remarks' => 'Leak Test 1 Bar'
'material' => '13.50'
]
2 => [
'remarks' => 'Foot Valve Incapsulated O-Ring 1 pcs - Replace'
'material' => '6.70'
]
3 => [
'remarks' => 'Seal Teflon 3\" Bottom Valve - Replace'
'material' => '10.50'
]
4 => [
'remarks' => 'Gasket Carton Bottom Valve 4 Hole 2 pcs - Replace'
'material' => '14.60'
]
]
You know, The model just store one default value like this :
$modelJobOrderDetails =[new JobOrderDetail([
'remarks' => ?? get from array above
'material' => ?? get from array above
])] ;
How about to store those array into this model ? Please advise.
Upvotes: 1
Views: 10137
Reputation: 749
read this: http://www.yiiframework.com/doc-2.0/yii-base-model.html#load()-detail
$model = new JobOrderDetail();
$model->load($arrayData, ''); // '' = formname or empty string
this way, you make sure only the (safe) attributes you want are loaded. $arrayData is an array of key/value pairs for ONE model. you have to iterate yourself.
Upvotes: 6
Reputation: 133370
assuming you have
$myArray = [
0 => [
'remarks' => 'ACETONE - '
'material' => '70.00'
]
1 => [
'remarks' => 'Leak Test 1 Bar'
'material' => '13.50'
]
2 => [
'remarks' => 'Foot Valve Incapsulated O-Ring 1 pcs - Replace'
'material' => '6.70'
]
3 => [
'remarks' => 'Seal Teflon 3\" Bottom Valve - Replace'
'material' => '10.50'
]
4 => [
'remarks' => 'Gasket Carton Bottom Valve 4 Hole 2 pcs - Replace'
'material' => '14.60'
]
];
you could iterate over your array an poplulatin using model-attributes
foreach($mymodel as $key = $value) {
$models[$key] = new JobOrderDetail();
$models[$key]->attributes = $value;
}
http://www.yiiframework.com/doc-2.0/guide-structure-models.html#massive-assignment
Upvotes: 1