首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试获取非对象- Laravel-5.5插入db的属性

尝试获取非对象- Laravel-5.5插入db的属性
EN

Stack Overflow用户
提问于 2017-12-14 10:50:17
回答 2查看 1K关注 0票数 1

我使用了下面的代码多次插入DB,但随机地给出了尝试获取非对象属性的错误异常。此外,有时它无法识别$test->databy the error [ErrorException] Undefined property: stdClass::$data --我理解大多数对这些问题的回答都建议使用$test'data‘,但是正如您所看到的,我的响应体在数组中有几个数组,我需要访问非常具体的值。

代码语言:javascript
复制
 for($j=1;$j<50;$j++)
   {    
        sleep(30);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "specified URL");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        $response = curl_exec($ch);
        curl_close($ch);

        $test=json_decode($response,true); 

        $size=count($test['data']);

        for($i=0;$i<$size;$i++)
        { 

        $start_date=date_create($test->data[$i]->opportunity->earliest_start_date);
        $end_date=date_create($test->data[$i]->opportunity->latest_end_date);
        $app_close_date=date_create($test->data[$i]->opportunity->applications_close_date);
        $date_approved=date_create($test->data[$i]->date_approved);
        $date_realized=date_create($test->data[$i]->date_realized);
        $experience_start_date=date_create($test->data[$i]->experience_start_date);
        $experience_end_date=date_create($test->data[$i]->experience_end_date);
        $signup_date=date_create($test->data[$i]->created_at);

        DB::insert('insert ignore into Opportunity (opportunity_id,opportunity_location,office_id,programme_name,title,earliest_start_date,latest_end_date,applications_close_date) values (?, ?, ?, ?,?, ?, ?, ?)', [$test->data[$i]->opportunity->id,$test->data[$i]->opportunity->location, $test->data[$i]->opportunity->office->id, $test->data[$i]->opportunity->programmes->short_name,$test->data[$i]->opportunity->title,date_format($start_date,"Y-m-d H:i:s"),date_format($end_date,"Y-m-d H:i:s"),date_format($app_close_date,"Y-m-d H:i:s")]);
        DB::insert('insert ignore into Home_LC (id, country, name) values (?, ?, ?)', [$test->data[$i]->person->home_lc->id,$test->data[$i]->person->home_lc->country,$test->data[$i]->person->home_lc->name]);
        DB::insert('insert ignore into Applications (app_id,ep_id,opportunity_id,date_approved,date_realized,experience_start_date,experience_end_date) values (?,?,?,?,?,?,?)', [$test->data[$i]->id,$test->data[$i]->person->id,$test->data[$i]->opportunity->id,date_format($date_approved,"Y-m-d H:i:s"),date_format($date_realized,"Y-m-d H:i:s"),date_format($experience_start_date,"Y-m-d H:i:s"),date_format($experience_end_date,"Y-m-d H:i:s")]);
        DB::insert('insert ignore into ep_users (ep_id,first_name,last_name,email,home_lc_id,signup_date,dob,status) values (?, ?,?, ?,?, ?,?, ?)', [$test->data[$i]->person->id,$test->data[$i]->person->first_name,$test->data[$i]->person->last_name,$test->data[$i]->person->email,$test->data[$i]->person->home_lc->id,date_format($signup_date,"Y-m-d H:i:s"),$test->data[$i]->person->dob,$test->data[$i]->status]);


        }

    }

上面给出的是获取json文件的代码,然后使用json_decode给出如下的答案:

代码语言:javascript
复制
array:3
 [
  "paging" => array:3 
[
    "total_items" => 216822
    "current_page" => 1
    "total_pages" => 1085
  ]
  "data" => array:200 [
    0 => array:19 [
      "id" => 3719730
      "url" => ""
      "status" => "open"
      "current_status" => "open"
      "an_signed_at" => null
      "nps_grade" => null
      "date_realized" => null
      "date_approved" => null
      "custom_status" => null
      "experience_start_date" => null
      "experience_end_date" => null
      "favourite" => null
      "person" => array:23 [ …23]
      "opportunity" => array:15 [ …15]
      "standards" => []
      "scheduled_interview" => null
      "permissions" => array:26 [ …26]
      "created_at" => "2017-12-14T10:27:06Z"
      "updated_at" => "2017-12-14T10:27:06Z"
    ]
....
    198 => array:19 [ …19]
    199 => array:19 [ …19]
  ]
  "facets" => null
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-27 09:34:03

$test=json_decode($response,true);改为$test=json_decode($response);$size=count($test['data'])更改为$size=count($test->data)

当使用json_decode($variable,true)时,返回的对象将被转换为关联数组。

票数 0
EN

Stack Overflow用户

发布于 2017-12-14 11:02:15

这是因为$test是数组而不是对象。

替换以下所有情况:

代码语言:javascript
复制
$test->data

转到

代码语言:javascript
复制
$test['data']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47811502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档