ssnegi
ssnegi

Reputation: 183

How to insert multiple data with single query using zend 2

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

Answers (1)

tookie009
tookie009

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

Related Questions