0

Is something like this possible? For each item in array make an insert into database? How should I do it, because clearly this doesn't work. At the moment it takes last item from the array and inserts its data.

    foreach ($properties as $prop): 
       $productProp = new ProductProperty();

       $productProp->product_id = $product->ID;
       $productProp->properties_id = $property->ID;
       $productProp->set_properties_id = $set_property->ID;
    endforeach;

$productProp->save(); //inserts into database
4
  • 5
    Why not put the save before the endforeach; ? Commented Sep 29, 2017 at 15:31
  • 1
    Well, maybe if you add the save() function into the loop..? Commented Sep 29, 2017 at 15:31
  • Currently you are resetting the properties on each iteration. Move the save() call inside the loop. Commented Sep 29, 2017 at 15:32
  • Haha, this is awkward. I think i need a little break from my project. Thanks anyways everyone... Commented Sep 29, 2017 at 15:42

1 Answer 1

1

You have to write in the database for each object.

  1. Create the object

  2. Set the object's attributes to certain values

  3. Insert the object in the database

And repeat while your array still have entries (objects).


Code:

foreach ($properties as $prop): 
   //Create a new object 
   $productProp = new ProductProperty();
   //Set the attributes 
   $productProp->product_id = $product->ID;
   $productProp->properties_id = $property->ID;
   $productProp->set_properties_id = $set_property->ID;
   //Insert it in the database 
   $productProp->save();
endforeach;
Sign up to request clarification or add additional context in comments.

3 Comments

I will go and rethink my life now. Thanks!
It is okay friend, we all do mistakes. I'm certain I have done a smiliar mistake in the past and someone out there helped me. One advice: just try reading your code line by line like its someone else's code so you can track the logic flaw.
This is just so silly mistake, but yeah things like this happen. Thanks anyways :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.