Laravel firstOrCreate的关系不返回模型实例

时间:2018-10-03 15:09:13

标签: php laravel eloquent

我正在使用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']);

2 个答案:

答案 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的可填充数组中