Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
Arrays 获取json对象的数组并映射到模型类Laravel_Arrays_Json_Object_Model_Mapping - Fatal编程技术网

Arrays 获取json对象的数组并映射到模型类Laravel

Arrays 获取json对象的数组并映射到模型类Laravel,arrays,json,object,model,mapping,Arrays,Json,Object,Model,Mapping,我打算将外部api的输出映射到模型中的对象属性 例如,数据->x到设备->$attribute_x;,数据->y到设备->$attribute\u y;输出是对象数组 我的预期结果是通过访问设备模型及其属性来提取每个对象,并在模型中进行一些操作。(仅从API获取一次时间,并在不同函数中格式化) 有人能给出一些关于如何定义方法/类来实现的指南吗 这是我从外部API的输出: { "data": [ { "x": "1", "y"

我打算将外部api的输出映射到模型中的对象属性

例如,数据->x到设备->$attribute_x;,数据->y到设备->$attribute\u y;输出是对象数组

我的预期结果是通过访问设备模型及其属性来提取每个对象,并在模型中进行一些操作。(仅从API获取一次时间,并在不同函数中格式化)

有人能给出一些关于如何定义方法/类来实现的指南吗

这是我从外部API的输出:

{
    "data": [
        {
            "x": "1",
            "y": "2"
        },
        {
            "x": "11",
            "y": "22"
        }
    ]
}
这是一个在Laravel中没有扩展的模型,可以使用guzzle从外部API提取所有数据

namespace App;

$client = new \GuzzleHttp\Client([
   'base_uri' => 'https://xxxx.com',
   'headers' => [
   'content_type' => 'application/json',
   'accept' => 'application/json'
   ]]);

$response = $client->get('units');
$data = json_decode($response->getBody());



class Devices
{
    protected $attribute_x;
    protected $attribute_y;

    public static function all(){

    }
}

我从head编写代码,但您可以使用以下方法在设备中创建代码:

public static function importFromAPI($data) {

    $result = [];

    foreach($data as $item) {
        $dev = new Device;
        $dev->attribute_x = $item['x'];
        $dev->attribute_y = $item['y'];
        $result[] = $dev;
    }

    return $result;
}
并使用它从API json的数据数组导入设备列表

$devices = Devices::importFromAPI($data);
您的
设备
可以扩展雄辩的
模型
类,也可以轻松访问数据库。上述方法也可以在单独的类中实现,例如
ApiService
,并重命名为
importDevicesFromAPI
,包含加载json并将其映射到设备对象的代码