类 stdClass 的对象的问题无法转换为字符串
Posted
技术标签:
【中文标题】类 stdClass 的对象的问题无法转换为字符串【英文标题】:Problem with Object of class stdClass could not be converted to string 【发布时间】:2020-08-10 09:06:41 【问题描述】:我在$number = "$autonumber[0]/$automonth/$autoyear/proforma";
这一行有错误。
这是错误:https://flareapp.io/share/qm1WG17d
我正在尝试使功能女巫将每月的形式数量添加到其他数据中。我不知道我做错了什么。有人帮帮我吗?
这是具有此功能的控制器会产生错误:
public function store(Request $request)
$autoyear = date('Y');
$automonth = date('m');
$autonumber = DB::table('proforms')
->select(DB::raw('MAX(autonumber) as autonumber'))
->where('automonth', '=', '$automonth')
->where('autoyear', '=', '$autoyear')
->get();
$autonumber[0]++;
$number = "$autonumber[0]/$automonth/$autoyear/proforma";
DB::table('proforms')->insert(
['autonumber' => $number, 'automonth' => $automonth, 'autoyear' => $autoyear]
);
request()->validate([
'user_id' => 'required',
'proformdate' => 'required',
'selldate' => 'required',
'paymentmethod' => 'required',
'paymentdate' => 'required',
'status' => 'nullable',
'city' => 'nullable',
'comments' => 'nullable',
'name' => 'required',
'PKWIU' => 'nullable',
'quantity' => 'required',
'unit' => 'required',
'netunit' => 'required',
'nettotal' => 'required',
'VATrate' => 'required',
'grossunit' => 'required',
'grosstotal' => 'required',
]);
Proform::create($request->all());
return redirect()->route('proforms.index')
->with('success', 'Proform created successfully.');
在 dd($autonumber); 之后 我明白了:
Illuminate\Support\Collection #1328 ▼
#items: array:1 [▼
0 => #1324 ▼
+"autonumber": null
]
print_r($autonumber);之后
Illuminate\Support\Collection Object ( [items:protected] => Array ( [0] => stdClass Object ( [autonumber] => ) ) )
【问题讨论】:
print_r($autonumber)
看看它是什么。
Illuminate\Support\Collection 对象([items:protected] => 数组([0] => stdClass 对象([autonumber] =>)))
要么使用->value('autonumber')
,要么仍然使用->get()
并到达内部维度$autonumber[0]->autonumber
请分享您问题中的错误消息以及您的调试尝试
stdClass 类的对象无法转换为字符串
【参考方案1】:
有一个误解,下面的代码不会返回一个整数,而是一个具有以下结构的对象:"autonumber": 42
。
$autonumber = DB::table('proforms')
->select(DB::raw('MAX(autonumber) as autonumber'))
->where('automonth', '=', '$automonth')
->where('autoyear', '=', '$autoyear')
->get();
更改代码以使用该结构。
$autonumber[0]->autonumber++;
$number = $autonumber[0]->autonumber;
$number = "$number/$automonth/$autoyear/proforma";
【讨论】:
以上是关于类 stdClass 的对象的问题无法转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
报错:使用 maatwebsite 导出到 excel 时,stdClass 类的对象无法转换为字符串
SQL 错误可捕获的致命错误:stdClass 类的对象无法转换为字符串