我需要将数据从Mysq表(Paniers)传输到另一个Mysql表(Commandes),并在传输后从第一个表中删除数据。
这是我的代码:
"Property [ID_User] does not exist on this collection instance."
我收到此错误:
$pdr = Panier::find($pn)->first();
如果我执行此操作,则只能获取第一行,而不是获取所有数据。我需要获取所有数据行!
int hexToDecimal(String s){
int result = 0;
int digit = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= '0' && c <= '9')
digit = c - '0';
else
if (c >= 'A' && c <= 'F')
digit = 10 + c - 'A';
else
inputError(s);
result = 16 * result + digit;
}
return result
}
答案 0 :(得分:3)
如果$ pn是数组Panier :: find($ pn)返回集合而不是实体,那么您应该对其进行迭代
Panier::find($pn)->each(function($pdr){
$user = Commande::create([
'ID_User' => $pdr->ID_User,
'ID_Piece' => $pdr->ID_Piece,
'QTE' => $pdr->QTE,
]);
if($user){
if($pdr->delete())
{
echo 'Commande Confirmée';
}
}
});
答案 1 :(得分:0)
您可以通过#!/bin/bash
while IFS= read -r l
do
printf "%s\n%d\n" "$l" "${#l}"
done < "$1"
并处理findOrFail
来做到这一点:
Exception
根据laravel 5.0文档:
通过主键检索模型或引发异常
有时候,如果找不到模型,您可能希望抛出异常。为此,您可以使用firstOrFail方法:
答案 2 :(得分:0)
在做的时候:
null
如果记录不存在,它将返回$pdr->ID_User
。然后,如果您执行<?php
function Commande(Request $request) {
$pn = $request->input('id');
$pdr = Panier::find($pn);
// Model not found
if(!$pdr){
return response()->json(['msg' => 'No records found']);
}
// Create new Commande
$user = Commande::create([
'ID_User' => $pdr->ID_User ?? 'default_value_for_ID_User',
'ID_Piece' => $pdr->ID_Piece ?? 'default_value_for_ID_Piece',
'QTE' => $pdr->QTE ?? 'default_value_for_QTE'
]);
// If user is created
if($user){
// Delete Panier
$pdr->delete();
return response()->json(['msg' => 'Success']);
}
return response()->json(['msg' => 'Could not create new Commande']);
}
,则将引发错误。请检查beloew更新:
ID_User
要使以上各项正常工作,您需要:
ID_Piece
模型中标记为{{1}的QTE
,$fillable = []
和Commande
列。Panier
模型的基本主键,否则delete()
将不起作用。