我正在使用firstOrCreate()查找或创建第一张发票。 上周这段代码正常工作,然后突然停止工作。
有效的方法: 已生成数据库条目,并且没有错误。
问题:firstOrCreate返回空。 {}
代码:
$invoice = Invoice::firstOrCreate(
[
'user' => $user->id,
'package' => $package->id,
'term' => $pricing->term,
'paid' => 0
], [
'amount' => $pricing->price,
'hash' => 'omittedforSO',
'coupon' => null
]
)->with(['billingInfo', 'package', 'price', 'coupon']);
答案 0 :(得分:2)
您必须在with()
之前致电firstOrCreate()
$invoice = Invoice::with(['billingInfo', 'package', 'price', 'coupon'])->firstOrCreate(
[
'user' => $user->id,
'package' => $package->id,
'term' => $pricing->term,
'paid' => 0
], [
'amount' => $pricing->price,
'hash' => 'notforSO',
'coupon' => null
]
);
答案 1 :(得分:0)
根据firstOrCreate和您的急切需求,他应该找到并返回Invoice
的第一个模型,其中参数(第一个数组)与额外的属性匹配为数组,包含您已经建立的关系编写,或使用第二个参数的值创建一个Invoice
。
话虽如此,除非您已经编辑过Laravel的核心代码,否则它永远不会返回空数组。如果对结果(dd
使用var_dump($invoice
),它将为您提供Querybuilder或Eloquent模型(具有空值的属性列表)。
确保您的字段位于模型Invoice
的可填充数组中