2017-08-21 14 views
0

モデル1:laravelの別のテーブルを参照している外部キー値を持つテーブルを追加するには?

namespace App; 
use Illuminate\Database\Eloquent\Model; 

class productDescription extends Model 
{ 
    protected $table="ProductDescription"; 
    protected $connection="mysql"; 

    public function productPricing() 
    { 
     return $this->belongsTo(priceInfo::class); 
    } 
    public function salesPackage() 
    { 
     return $this->hasMany(packageModel::class); 
    } 
} 

モデル2:

class packageModel extends Model 
{ 
    // 
    protected $table="subSalesPackage"; 
    protected $connection="mysql"; 

    public function product_description(){ 
     return $this->belongsTo(productDescription::class); 
    } 
} 

コントローラー:

public function addProductDetails(Request $formdescription,$dataId) 
{ 
    $description=new productDescription; 
    $description->deviceCategoryId=$dataId; 
    $description->productdescriptionid=$this->getproductDescriptionId(); 
    $description->modelName=$formdescription->input('mname'); 

    $description->batteryType=$formdescription->input('batteryType'); 
    //$description->salesPackage =$formdescription->input('package'); 
    $description->skillSet =$formdescription->input('skillSet'); 
    $description->Colour=$formdescription->input('colour'); 
    $description->Material =$formdescription->input('material'); 
    $description->maxAge=$formdescription->input('maxage'); 
    $description->minAge =$formdescription->input('minage'); 

    //$product->productPricing()-save($priceInfo); 
    //$product->productDetails()->save($description); 
    $description->save(); 

    $salesPackage=new packageModel; 
    $salesPackage->salesPackage=$formdescription->input('package'); 
    **$salesPackage->product_description()->associate($description);** 
    $salesPackage->save(); 
    //echo("success"); 

    return response()->json([ 
     'modelName' => $formdescription->mname, 
     'colour' => $formdescription->colour, 
     'rechargable' => $formdescription->rechargable, 
     'batteryType' => $formdescription->batteryType 
    ]); 

    //$description->product()->associate($priceInfo); 
} 

Migration-> productdescription:

public function up() 
{ 
    // 
    Schema::create('ProductDescription', function (Blueprint $table) { 
     $table->engine='InnoDB'; 
     $table->string('productdescriptionid')->primary(); 
     $table->string('product_id'); 

      $table->string('salesPackage'); 
     $table->timestamps(); 
     $table->index(['productDescriptionId']); 

    }); 
} 

これは第1のテーブル(モデル)のマイグレーションです。これは主キーが「製品説明」です。

Migration-> subSalespackageここ

public function up() 
{ 
    // 
    Schema::create('subSalesPackage', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('product_description_id'); 
     $table->string('salesPackage'); 
     $table->foreign('product_description_id')- 
    >references('productdescriptionid')->on('ProductDescription'); 
     $table->timestamps(); 
     $table->index(['id']); 
    }); 
} 

私はこのsalespackageテーブルを追加するときに、値がproductdescriptionid(productDescription)の値が追加されますする必要があり、外国key.Andとしてproductdescriptionidと呼ばれています。

しかし、私が取得しているエラーは、子行を追加または更新できません。

答えて

1

あなたはこれを試してみてください:

return response()->json([ 
    'SKUID' => $priceInfo->SKUID, 
    'listingStatus' => $priceInfo->listingStatus, 
    'MRP' => $priceInfo->MRP, 
    'sellingPrice' => $priceInfo->sellingPrice, 
    'id' =>$this->getproductId() 
]); 

はあなたのためにこの作品を願っています!

関連する問題