[英]create a PHP multidimensional array in laravel 5.4 for the mysql join statement which which return multiple row for a user id
[英]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_name
, last_name
, email
和name
,然后将其保存在数据库中。 问题是我似乎无法检索到工作名称,而是给了我此错误消息
(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.