You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel报错:集合实例不存在amount_requested属性,但字段存在

问题排查与解决

核心原因

你调用Product_Market::where(...)->get()得到的$repeated_entry是Eloquent集合(Collection),而非单个模型实例。集合本身没有amount_requested属性,这个属性属于集合内的单个Product_Market模型对象,所以直接访问$repeated_entry->amount_requested会触发属性不存在的报错。

解决方案(保留集合适配后续代码)

你可以在保留原集合的前提下,先从集合中取出对应的单个模型实例来获取属性值,修改后的代码如下:

$repeated_entry = Product_Market::where('produto_id', '=', $product->id)->where('market_id', '=', $market->id)->get();
$repeated_entry_update = Product_Market::where('produto_id', '=', $product->id)->where('market_id', '=', $market->id);

if($repeated_entry->count()){
    // 从集合中取出第一个模型实例
    $first_entry = $repeated_entry->first();
    $repeated_entry_update->update([
        'amount_requested' => $first_entry->amount_requested + $request->product_amount,
        'amount_left' => $first_entry->amount_requested + $request->product_amount,
    ]);
}else{
    // 模型类名保持驼峰写法
    Product_Market::create([
        'produto_id' => $product['id'],
        'market_id' => $market['id'],
        'amount_requested' => $request->product_amount,
        'amount_left' => $request->product_amount,
        'amount_sold' => '0'
    ]);
}

额外优化建议

如果你的查询逻辑确保只会返回0或1条记录,也可以用first()替代get()获取单个模型实例,同时用exists()判断是否存在,这样代码更简洁,但如果你必须保留集合,上面的方案更适合:

$repeated_entry = Product_Market::where('produto_id', '=', $product->id)->where('market_id', '=', $market->id)->first();

if($repeated_entry){
    $repeated_entry->update([
        'amount_requested' => $repeated_entry->amount_requested + $request->product_amount,
        'amount_left' => $repeated_entry->amount_requested + $request->product_amount,
    ]);
}else{
    Product_Market::create([
        'produto_id' => $product['id'],
        'market_id' => $market['id'],
        'amount_requested' => $request->product_amount,
        'amount_left' => $request->product_amount,
        'amount_sold' => '0'
    ]);
}

内容的提问来源于stack exchange,提问作者evinn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:55:52