HasMany定义与范围有问题

9 浏览
0 Comments

HasMany定义与范围有问题

我在"Dosser"模型中定义了以下函数:

public function billingDocs()
{
    return $this->hasMany(BillingDoc::class);
}
public function regularInvoiceDocs()
{
    return $this->billingDocs()->regularType();
}

在"BillingDoc"模型中:

public function scopeRegularType(Builder $builder)
{
    $builder->where('billing_type_id', BillingType::named('regular')->id);
}

现在,如果我在"Dossier"模型中的一个函数中调用`$this->regularInvoiceDocs`,它会返回一个空数组。但是如果我调用`$this->regularInvoiceDocs()->get()`,它会返回所需的项目。当然,如果我只调用`$this->billingDocs`,我也可以得到所需的项目。我认为使用带有范围条件的HasMany函数是可以的。我经常使用它而没有问题,我不明白这里发生了什么。提前感谢!

0
0 Comments

在我的代码的另一个部分出现了问题,实际上我弄错了。这是一个测试,函数构建regularInvoiceDocs关系被调用了两次,第一次是在它为空的时候,第二次是在它应该返回一个集合的时候。但是关系被缓存了第一次的结果。所以,简单地使用$dossier->refresh(),一切正常工作了。

0