gpt4 book ai didi

php - 由于条件关系,在 null 上调用成员函数 addEagerConstraints()

转载 作者:行者123 更新时间:2023-12-04 15:18:32 24 4
gpt4 key购买 nike

我必须处理具有次优数据库设计的 Laravel 7 应用程序,导致标题中提到的错误。

数据库看起来像这样:

mains
- id
- sub_type

subs_a
- id
- main_id

subs_b
- id
- main_id

然后我有一个类Main,方法是sub:

public function sub()
{
switch($this->sub_type) {
case 'a':
return $this->hasOne('SubTypeA');
break;
case 'b':
return $this->hasOne('SubTypeB');
break;
default:
return null;
}
}

此代码在 99% 的情况下都有效,但 Laravel 有时会加载 Main 的空实例,然后尝试加载关系。这不起作用,因为方法 sub 的默认值是 null

重组数据库在待办事项列表中,但目前没有任何帮助。

我有什么选择可以阻止 Laravel 尝试在空对象上加载 sub 关系?

最佳答案

我知道这是某种预期的结果,但我试图返回一个空的关系?

public function sub()
{
switch($this->sub_type) {
case 'a':
return $this->hasOne('SubTypeA');
break;
case 'b':
return $this->hasOne('SubTypeB');
break;
default:
return $this->newQuery(); // or newQueryWithoutScopes()
}
}

感谢这个answer .它应该防止 addEagerConstraints() 在 null 上的错误。

关于php - 由于条件关系,在 null 上调用成员函数 addEagerConstraints(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63844711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com