Php 通过关联数组进行Laravel循环,然后保存到数据库
我是一名初学者,目前正在学习Vue js和Laravel。因此,我试图找出如何通过axios创建一个POST请求,然后将多个条目插入到我的数据库中 我有一个数组,例如:Php 通过关联数组进行Laravel循环,然后保存到数据库,php,arrays,json,laravel,Php,Arrays,Json,Laravel,我是一名初学者,目前正在学习Vue js和Laravel。因此,我试图找出如何通过axios创建一个POST请求,然后将多个条目插入到我的数据库中 我有一个数组,例如: { "comakers": [ { "name": "Sample", "email": "sample@email.com" }, { "name": "Test", "email": "test@email.com" } ] } 然后在
{
"comakers": [
{
"name": "Sample",
"email": "sample@email.com"
},
{
"name": "Test",
"email": "test@email.com"
}
]
}
然后在我的laravel控制器上,我想做这样的foreach循环
public function update(Request $request, $id)
{
$data = $request->all();
foreach ($data as $comaker){
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker->name;
$nominate->comaker_email = $comaker->email;
$nominate->save();
}
}
$data = $request->all();
foreach ($data['comakers'] as $comaker){
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker['name'];
$nominate->comaker_email = $comaker['email'];
$nominate->save();
}
但是我得到一个错误“试图获取非对象的属性'name'”。有人能告诉我如何实现这一点吗
顺便说一句,我正试图从我的控制器使用更新功能。基本上,我想(插入新的,如果不存在)或(编辑时,有一个现有的数据)。我在这里的做法正确吗
(更新)
当我尝试获取$data=$request->all()的值时,laravel dd或dump显示了这一点代码>
我不认为all()
将返回一个对象数组,而是一个关联数组。因此,您可以尝试以下方法:
// Notice that you should use `json()` since the data is in json format
$data = $request->json()->all();
foreach ($data['comakers'] as $comaker) {
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker['name'];
$nominate->comaker_email = $comaker['email'];
$nominate->save();
}
当然,您也可以将结果投射到如下对象:
foreach ($data['comakers'] as $item) {
$comaker = (object) $item;
$nominate = new Nominate($data);
...
我还建议您只需使用var\u dump()
打印结果的内容,以查看其实际包含的内容,例如:
var_dump($data);
我不认为all()
将返回一个对象数组,而是一个关联数组。因此,您可以尝试以下方法:
// Notice that you should use `json()` since the data is in json format
$data = $request->json()->all();
foreach ($data['comakers'] as $comaker) {
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker['name'];
$nominate->comaker_email = $comaker['email'];
$nominate->save();
}
当然,您也可以将结果投射到如下对象:
foreach ($data['comakers'] as $item) {
$comaker = (object) $item;
$nominate = new Nominate($data);
...
我还建议您只需使用var\u dump()
打印结果的内容,以查看其实际包含的内容,例如:
var_dump($data);
我认为您在Json变量上执行foreach,而不是其中的comakers对象
foreach ($data->comakers as $comaker) {
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker->name;
$nominate->comaker_email = $comaker->email;
$nominate->save();
}
我认为您在Json变量上执行foreach,而不是其中的comakers对象
foreach ($data->comakers as $comaker) {
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker->name;
$nominate->comaker_email = $comaker->email;
$nominate->save();
}
当您尝试循环时,忘记了comaker
键,您应该这样做
public function update(Request $request, $id)
{
$data = $request->all();
foreach ($data as $comaker){
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker->name;
$nominate->comaker_email = $comaker->email;
$nominate->save();
}
}
$data = $request->all();
foreach ($data['comakers'] as $comaker){
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker['name'];
$nominate->comaker_email = $comaker['email'];
$nominate->save();
}
当您尝试循环时,忘记了comaker
键,您应该这样做
public function update(Request $request, $id)
{
$data = $request->all();
foreach ($data as $comaker){
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker->name;
$nominate->comaker_email = $comaker->email;
$nominate->save();
}
}
$data = $request->all();
foreach ($data['comakers'] as $comaker){
$nominate = new Nominate();
$nominate->loan_application_id = $id;
$nominate->comaker_name = $comaker['name'];
$nominate->comaker_email = $comaker['email'];
$nominate->save();
}
像这样的错误消息通常有一个行号,可以告诉您在哪里可以找到错误。请在这里发布时显示所有错误消息好吗Hi Noah,你能用axios post更新你的问题吗,我想你在requestDo avar_dump($data)中找不到数组了
并向我们显示输出please@RiggsFollyI添加了questionError消息上的转储日志,这样的错误消息通常有一个行号,为您提供查找错误的线索。请在这里发布时显示所有错误消息好吗Hi Noah,你能用axios post更新你的问题吗?我想你找不到请求中的数组了。请执行var\u dump($data)
并向我们显示输出please@RiggsFollyI不幸的是,这样做会显示另一个错误“尝试获取非对象的属性'comakers'”相反,我看到了您的vardump,您无法获取非对象的属性。由于它是一个数组,您应该为foreach尝试$data['comakers']
,并在循环中尝试$comaker['name']
,不幸的是,这样做会显示另一个错误”试图获取非对象的属性'comakers'”相反,我看到了你的vardump,你无法获取非对象的属性。因为它是一个数组,你应该尝试$data['comakers']
foreach和$comaker['name']
在loopHey Cyclonecode中,我添加了一行$comaker=(对象)$comaker;
在foreach之后,它实际上解决了问题。你能把它加回去吗?我可以接受你的答案吗?非常感谢你的帮助!@Noah-是的,我又加了一次,但唯一起作用的原因是,数据不是我在答案顶部所说的对象数组。数据是一个关联数组,所以第一个解决方案是在上也应该可以工作。嘿,Cyclonecode,我添加了行$comaker=(object)$comaker;
在foreach之后,它实际上解决了问题。你能把它加回去吗?我可以接受你的答案吗?非常感谢你的帮助!@Noah-是的,我又加了一次,但唯一起作用的原因是,数据不是我在答案顶部所说的对象数组。数据是一个关联数组,所以第一个解决方案是在上也应该可以。我认为这不起作用,因为结果中没有对象,只有关联数组。你是对的,Laravel将json解码为关联数组,我将更新我的回答。我认为这不起作用,因为结果中没有对象,只有关联数组。你是对的,Laravel将json解码为关联数组,我会更新我的答案