2

Products、Company、Type の 3 つのテーブルがあります。Company および Types は、Products と 1 対多の関係にあります。【型式】

class Type extends BaseModel {
    public static $table = "type";
    public static $timestamps = true;

    public function products() {
      return $this->has_many('Products');
    }
}

【企業モデル】

class Company extends BaseModel {
    public static $table = "company";
    public static $timestamps = true;

    public function products() {
        return $this->has_many('Products');
    }
}

【商品モデル】

class Products extends BaseModel {
    public static $table = 'products';
    public static $timestamps = true;


    public function company() {
        return $this->belongs_to('Company');
    }

    public function type() {
        return $this->belongs_to('Type');
    }
}

add_product ルートで私は持っています

$product = new Products($new_product); 
$company_id = $all_posts['company_id'];
$company = Company::find($company_id);
$company->products()->save($product);
$type_id = $all_posts['type'];
$type = Type::find($type_id);
$type->products()->save($product);

しかし、データを db に挿入しようとすると、次のようになります。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '11' for key 'PRIMARY'

Products テーブルの type_id と company_id の両方を更新するにはどうすればよいですか?

4

1 に答える 1

3

私が間違っていなければ、製品テーブルには product_id 列と type_id 列が必要ですか? 次の値を指定するだけです。

$new_product['company_id'] = $all_posts['company_id'];
$new_product['type_id'] = $all_posts['type'];
$product = new Products($new_product); 
$product->save();

Company および Type モデルを使用して、それらと製品との関係を作成する必要はありません。ID を入力するだけです。

于 2013-01-29T02:58:57.233 に答える