Php Laravel-在上创建有许多不起作用
插入的行Php Laravel-在上创建有许多不起作用,php,laravel,Php,Laravel,插入的行键,值为空 \App\Product::find(1)->getProductMeta()->create([ 'key' => 'a key', 'value' => 'a value' ]); 查询SQL: 插入'product\u metas'('product\u id')值(?) 产品: function getProductMeta(){ return $this->hasMany('App\ProductMeta
键
,值
为空
\App\Product::find(1)->getProductMeta()->create([
'key' => 'a key',
'value' => 'a value'
]);
查询SQL:
插入'product\u metas'('product\u id')值(?)
产品:
function getProductMeta(){
return $this->hasMany('App\ProductMeta');
}
ProductMeta:
protected$filleble=['key','value']代码>
迁移:
Schema::create('product_metas', function (Blueprint $table) {
$table->increments('id');
$table->integer('product_id')->unsigned()->index();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');;
$table->string('key')->index();
$table->text('value')->nullable();
});
你必须在两个模型中建立关系,例如产品模型和管理模型
例如,您在产品模型中说
public function admin(){
return $this->belongsTo(Admin::class, 'admin_id');
}
public function product(){
return $this->hasMany(Product::class);
}
在您的管理模式中
public function admin(){
return $this->belongsTo(Admin::class, 'admin_id');
}
public function product(){
return $this->hasMany(Product::class);
}
这样,表和模型都将相互关联
PS:我不知道您的确切模型和表,所以我假设管理员是发布者,产品是发布者,您可以将其更改为表名。我看不出您的代码有任何错误。只需尝试以下方法之一即可创建关系项
将此添加到ProductMeta
模型
protected $fillable = ['key', 'value', 'product_id'];
在控制器中执行此操作,以便获得有效的产品
$product = Product::findOrFail(1);
然后
或
或
在我的模型中,我用remove function\uu构造解决了我的问题
我不知道为什么我要做一个构造方法 共享这两个模型的表结构,以及如何获取$product
?@sandesh这里有更新,如果您寻求帮助,您需要发布适当的代码。你还没有把我要求的一半发出去?复制粘贴你的迁移和controller方法。post已经更新了。你能读懂我说的吗?共享控制器代码,以便我可以查看您如何获取$product
。由于您正在使用关系创建,我想看看$product
是否是有效的模型。这不是我的ansewron方法2:SQLSTATE[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败(`store`.`product\u metas`,约束`product\u id\u foreign`外键(`product_id`)在DELETE CASCADE上引用`products`(`id`)(SQL:insert into`product_metas`())values())
@danialdezzouni这意味着表中不存在产品id。您需要验证产品是否存在。这就是我使用findOrFail()
而不是find()
。运行dd($product);
并检查结果。具有product->id的产品已存在,很高兴它能工作。我认为第二种方法不起作用的原因是因为您忘记使用product\u id字段更新$filleble属性谢谢,没有I'v updatedprotected$filleble=['product\u id','key','value'];
$productMeta = new \App\ProductMeta;
$productMeta->key = 'a key';
$productMeta->value = 'a value';
$productMeta->product_id = $product->id;
$productMeta->save();