Reputation: 183
I am trying to insert multiple data with single query using zend 2. For reference below is the code . It is not throwing any error but data is not getting inserted. I am calling "mapOffers" from controller where I am passing the indexed array "$assigned_b"..Kindly help me with this.
namespace Offers\Model;
use Zend\Db\Adapter\Adapter;
use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Sql\Sql;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Where;
use Zend\Db\Sql\Insert;
use Utility\Utility;
class OffersTable extends AbstractTableGateway {
protected $table = 'offers';
protected $joinTable = 'organization';
protected $b_offer = 'b_offers';
protected $sql_object,$select_object;
public function __construct(Adapter $adapter) {
$this->adapter = $adapter;
}
public function mapOffers($assigned_b,$offer_id){
$sql = new Sql( $this->adapter );
$delete = $sql->delete($this->beacon_offer)->where("offer_id = $offer_id");
$deleteString = $sql->getSqlStringForSqlObject($delete);
$query = 'INSERT INTO '.$this->offers . ' (`offer_id`, `b_id`) VALUES ';
$queryVals = array();
foreach ($assigned_b as $_bid) {
if($_bid){
$queryVals[] = "(".$offer_id.",".$_bid.")";
}
}
$stmt = $this->adapter->query($query . implode(',', $queryVals));
}
}
Upvotes: 0
Views: 938
Reputation: 186
you need to call the execute function. It has to look like that (example from my own project)
$this->adapter->query($query)->execute();
Upvotes: 0