Right, the table must exist, but that's not to say it was created within the same process. DDL objects, specifically create table objects, should likely never be used in production as they are modifying the schema, as this is implying.

Really, you don't need CreateTable to achieve what you're suggesting.  What could be expected of the consumer is something like:

```php
$insert->into('foo')->columns(array(...))->select($select);
```