Laravel &引用;“已解决”;使用firstOrCreate创建后的对象在php中的Id为0,在DB中的Id为right

Laravel &引用;“已解决”;使用firstOrCreate创建后的对象在php中的Id为0,在DB中的Id为right,laravel,eloquent,Laravel,Eloquent,我使用firstOrCreate雄辩的方法将对象保存到数据库中。 代码: 例如,在DB中为10258,但在debugbar中为0 多谢各位 这就是问题所在。我并没有在模型中将递增设置为false public$incrementing=false dd($card->id)也给出0 二,四。只有在创建新行时才会发生这种情况。 数据库中有正确的Id,返回的对象Id为0。dd($card->Id)怎么样?因为可能存在具有该id的记录,但无法更新,可能您的日期未通过验证,这就是$card为0(fals

我使用firstOrCreate雄辩的方法将对象保存到数据库中。 代码:

例如,在DB中为10258,但在debugbar中为0

  • 多谢各位
  • 这就是问题所在。我并没有在模型中将递增设置为false

    public$incrementing=false

  • dd($card->id)也给出0
  • 二,四。只有在创建新行时才会发生这种情况。
    数据库中有正确的Id,返回的对象Id为0。

    dd($card->Id)怎么样?因为可能存在具有该id的记录,但无法更新,可能您的日期未通过验证,这就是$card为0(false)的原因,请尝试使用SQL执行该查询。我认为您应该会得到错误,关于dd是相同的结果@ChristopherHubert您可以向我们显示模型和迁移代码吗?可能与或@VaheGalstyan有关,我认为
    first或create
    应该始终返回
    $card
    ,并且不能返回0/false/null。如果未创建记录,则在调用
    $card->id
    
            $card = Card::firstOrCreate(
                [
                    'id' => $product->id
                ],
                [
                    'foil' => $data->foil,
                    'nonfoil' => $data->nonfoil,
                    'oversized' => $data->oversized,
                    'reserved' => $data->reserved,
                    'booster' => $data->booster,
                    'scryfallCollectorNumber' => $data->collector_number,
                    'fullArt' => $data->full_art,
                    'promo' => $data->promo,
                    'story_spotlight' => $data->story_spotlight,
                    'textless' => $data->textless,
                ]);
            \Debugbar::info($card->id);