繁体   English   中英

多维数组Laravel 5.4

[英]Multidimensional array Laravel 5.4

我已经被这个问题困扰了一段时间了。 在laravel的Socialite的帮助下,我有这个特殊的阵列。

"first_name" => "xxx"
"last_name" => "xx"
"email" => "xxx@gmail.com"
"work" => array:2 [▼
  0 => array:4 [▼
    "employer" => array:2 [▼
      "id" => "xxxxxxxxxxxxxx"
      "name" => "FBI"
    ]
    "location" => array:2 [▶]
    "start_date" => "0000-00"
    "id" => "496298904045521"
  ]
  1 => array:6 [▶]
]

我想做的是从work获取first_namelast_nameemailname ,然后将其保存在数据库中。 问题是我似乎无法检索到工作名称,而是给了我此错误消息

(1/1)ErrorException未定义索引:雇主

我该如何进行这项工作? 这里很失落。

控制者

public function handleProviderCallback()
{
    $usersocialite = Socialite::driver('facebook')->fields([
        'first_name', 'last_name', 'email', 'work'
    ])->user();

    //dd($usersocialite);
   $findUser = Fbuser::where('email',$usersocialite->email)->first();

    if ($findUser) {
        Auth::login($findUser);
        return view('home');
    }else{
        $user = new Fbuser;
        $user->first_name = $usersocialite->user['first_name'];
        $user->last_name = $usersocialite->user['last_name'];
        $user->email = $usersocialite->user['email'];
        $work=$usersocialite->user['work'];
        $w = collect([$work=>[$usersocialite->user['employer']=>[$usersocialite->user['name']]]]);
        $flattened = $w->flatten();
        $flatten->all();
        $user->work = $usersocialite->user[$flatten];
        $user->save();
        Auth::login($user);
        return view('home');
    }

}

您以错误的方式访问雇主名称。 您跳过一些索引:

$w = collect([$work=>[$usersocialite->user['work'][0]['employer']=>[$usersocialite->user['work'][0]['employer']['name']]]]);

我不明白你在做什么。 但我认为您想要这样的事情:

$w = collect(['work'=>[$work[0]['employer']=>[$work][0]['employer']['name']]]]);

要访问多维数组中的作品名称,您可以使用如下所示的内容:

$user->work = $usersocialite->user['work'][0]['employer']['name'];

或者您可以使用Laravel辅助函数array_get

$user->work = array_get($usersocialite->user, 'work.0.employer.name');

上面的行将替换代码:

 $work=$usersocialite->user['work'];
 $w = collect([$work=>[$usersocialite->user['employer']=>[$usersocialite->user['name']]]]);
 $flattened = $w->flatten();
 $flatten->all();
 $user->work = $usersocialite->user[$flatten];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM