插入具有一对多关系的数据


Inserting data with one-to-many relationship

>我有三个表:产品、公司、类型。公司和类型与产品有一对多关系。[类型型号]

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);

但是当我尝试将数据插入数据库时,我得到:

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

如何更新产品表中的type_id和company_id?

如果我没记错的话,你的产品表应该有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();

您无需使用"公司"和"类型"模型即可在它们与产品之间建立关系。您可以简单地填写 ID。