Chain of responsibility and handlers dependent on each other
I'm not to sure about your base handler. It has methods like handle() and handleField() that look very similar. One will probably do. I also noted that the save() method is completely missing from your code. Why? You use it, so it should be there. Or at least in an usage example.

As to your actual problem with saving, you can hand over the id's as an argument to the next save() in the clain. Something like:

public function save(array $insertIds = [])
{
    // ..... put needed insert ids into data here ....
    // then perform the insert and get the new insert id 
    $newInsertId = $this-&gt;insertRow($this-&gt;table,$this-&gt;data);
    // add that to the array of insert ids
    $insertIds[$this-&gt;table] = $newInsertId;
    // progress down the chain, if possible
    if ($this-&gt;nextHandler()) {
        $this-&gt;nextHandler-&gt;save($insertIds);
    }
}


Note that in the $insertIds array the keys are table names, and the values are the actual insert ids. This way all insert ids are available to save() methods down the chain.

It could be useful to return the $insertIds.

Note that the order of chaining is important. You have to think about that when you create the chain. Perhaps it would be a good idea to allow for multiple next handlers.