模型里面有一个方法是这样的:
public function adjustbills()
{
if($this->user_combined == '1'){
$invoiceNumberArr = ['xxx'];
return Adjustbill::whereIn('invoice_number',$invoiceNumberArr)->where('user_id', $this->user_id);
}else{
return $this->hasMany(Adjustbill::class, 'invoice_number', 'invoice_number')->where('user_id', $this->user_id);
}
}
当调用方式是Model->adjustbills的时候,
- 要是走到了下面的判断,不会报错
- 要是走到了上面的判断, 会报错must return a relationship instance, 因为laravel默认会用到下面的hasMany的关系, 如果没有的话就会报错.
解决方法:
- 想办法把上面的逻辑修改成下面的那种关系方式
- 调用方式用:Model->adjustbills->get()的方式

本文介绍如何在Laravel模型中处理`hasMany`关系的逻辑错误,并提供了一种通过`get()`方法转换查询以避免报错的方法。作者详细展示了如何将条件判断转换为关系实例,确保在不同情况下的正确调用。
357

被折叠的 条评论
为什么被折叠?



