类 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 的对象的问题无法转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

类 stdClass 的对象无法转换为字符串错误

报错:使用 maatwebsite 导出到 excel 时,stdClass 类的对象无法转换为字符串

SQL 错误可捕获的致命错误:stdClass 类的对象无法转换为字符串

WordPress:可捕获的致命错误:stdClass 类的对象无法转换为字符串

将 stdClass 对象转换/转换为另一个类

将 stdClass 类的对象转换为 JSON 对象