Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-在上创建有许多不起作用_Php_Laravel - Fatal编程技术网

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 updated
protected$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();