Monday, 15 August 2011

php - Laravel save method taking wrong table name -



php - Laravel save method taking wrong table name -

hi trying create campaign. in process of campaign assign products campaign. have insert details after post campaign creation 2 tables 1 campaigns , 1 campaignsproducts. created 2 models each of them on same names.

i trying insert records both tables on post action using save method. able insert campaigns when comes campaignsproducts says campaigns_products table not exists.

in db table name campaignsproducts. please help going wrong. please find migration, model , post action code below.

<?php utilize illuminate\database\schema\blueprint; utilize illuminate\database\migrations\migration; class createcamapignproductstable extends migration { /** * run migrations. * * @return void */ public function up() { schema::create('campaignproducts', function(blueprint $table) { $table->increments('id'); $table->integer('campaign_id')->unsigned(); $table->integer('product_id')->unsigned(); $table->decimal('product_sell_cost', 10, 2); $table->timestamps(); }); schema::table('campaignproducts', function($table) { $table->foreign('campaign_id')->references('id')->on('campaigns'); $table->foreign('product_id')->references('id')->on('products'); }); } /** * reverse migrations. * * @return void */ public function down() { schema::drop('campaignproducts'); } }

model campaignproducts.php

<?php class campaignproducts extends eloquent { public function camapigns(){ homecoming $this->hasmany('campaign'); } public function products(){ homecoming $this->hasmany('product'); } }

post action in controller

public function postcampaign() { //validation rules create product $rules = array( 'campaign_name' => 'required|min:2', 'campaign_description' => 'required|min:2', 'campaign_startdate' => 'required|date_format:"y-m-d"', 'campaign_enddate' => 'required|date_format:"y-m-d"', 'campaign_urlname' => 'required|between:4,20', 'campaign_target' => 'required|integer|min:1', 'user_id' => 'required|integer|min:1' ); $validator = validator::make(input::all(), $rules); //procee validation rules if($validator->fails()) { homecoming redirect::to('products/newcampaign') ->witherrors($validator) ->withinput(); } else { echo "<pre>"; print_r(input::all()); //store category info $campaign = new campaign; $campaign->campaign_name = input::get('campaign_name'); $campaign->campaign_description = input::get('campaign_description'); $campaign->campaign_startdate = input::get('campaign_startdate'); $campaign->campaign_enddate = input::get('campaign_enddate'); $campaign->campaign_urlname = input::get('campaign_urlname'); $campaign->campaign_target = input::get('campaign_target'); $campaign->user_id = input::get('user_id'); $campaign_id = $campaign->save(); $campaign_products = input::get('productid'); $campaignproducts = new campaignproducts; foreach($campaign_products $key => $id) { $campaignproducts->product_id = $key; $$campaignproducts->product_sell_cost = $id; $campaignproducts->campaign_id = $campaign_id; $campaignproducts->save(); } //redirect session::flash('message', 'successfully created campaign!'); homecoming redirect::to('campaigns'); } }

add campaignproducts model:

class campaignproducts extends eloquent { protected $table = 'campaignsproducts'; ...

or other alternative alter table name when create instead:

schema::create('campaign_products', function(blueprint $table)

php laravel-4

No comments:

Post a Comment