Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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 创建具有一对多关系的实体_Php_Json_Laravel_Laravel 5 - Fatal编程技术网

Php 创建具有一对多关系的实体

Php 创建具有一对多关系的实体,php,json,laravel,laravel-5,Php,Json,Laravel,Laravel 5,我有一个产品类和一个图像类。每个产品都有许多图像。我相信我已经正确地建立了这种关系,但在创建产品时,我在创建图像时遇到了困难。我有一个函数,它接收一个请求,该请求包含一个包含产品详细信息的JSON对象,包括一个图像数组。我将JSON转换成一个变量,但如果我只是将变量保存到数据库中,它只保存产品详细信息,不包括图像。我使用下面的代码查看了trid,但是$product变量未被识别为产品类型,因此无法识别product类上的images() $product->images()->保存($image

我有一个产品类和一个图像类。每个产品都有许多图像。我相信我已经正确地建立了这种关系,但在创建产品时,我在创建图像时遇到了困难。我有一个函数,它接收一个请求,该请求包含一个包含产品详细信息的JSON对象,包括一个图像数组。我将JSON转换成一个变量,但如果我只是将变量保存到数据库中,它只保存产品详细信息,不包括图像。我使用下面的代码查看了trid,但是$product变量未被识别为产品类型,因此无法识别product类上的images()

$product->images()->保存($images)

这是用于创建产品的函数:

public function api_create(Request $request)
{
    try {
        $product = new Product;
        $product = json_decode($request->getContent(), true);
        $images = $product['images'];
        return Product::create($product);
    } catch (Exception $exception) {
        return "error";
    }
}
在产品类别中:

public function images(){
    return $this->hasMany('App\Image', 'productId');
}    
在图像类中:

public function product(){
    return $this->belongsTo('App\Product', 'productId');
}
图像数据库列:id(PK)、productId(FK)、imageUrl

产品数据库列:id(主键)、标题、说明更改此项:

$images = $product['images'];
return Product::create($product);
致:

如果每个
$image
都是一个格式正确的数组,这将起作用,例如:

['filename' => 'flower.jpg', 'size' => 54438]
如果格式不同,则需要手动映射,例如:

->create([
    'filename' => $image['uploaded_file_name'],
    'size' => $image['file_size_in_bytes']
]);

您必须添加一个循环来添加来自json的图像。嗨,不幸的是,它仍然没有将图像添加到db,只是产品。当我调试时,它会命中foreach循环,但不会执行foreach循环内的行。我没有错误或例外。我还编辑了我的问题,添加了更多细节
->create([
    'filename' => $image['uploaded_file_name'],
    'size' => $image['file_size_in_bytes']
]);