laravel-5 - Laravel Eager Loading 不起作用,而延迟加载同样有效
问题描述
目前我正在加载这样的关系:
$matches = App\Match::all();
foreach($matches as $match){
$match->thuisPouleTeam;
}
原因是我需要加载这些关系,因为它是用于 api 端点。
它工作正常,但是所有其他关系属性都是通过预先加载的->with()
方法加载的,但是如果我尝试通过预先加载来加载这个,它会变成一个错误:
strtolower() expects parameter 1 to be string, array given
我猜这可能是因为我使用compoships 包来允许复合键,所以关系方法如下所示:
public function thuisPouleTeam(){
return $this->hasOne('App\PouleTeam', ["teamGuid", "pouleGuid"], ["thuisGuid", "pouleGuid"]);
}
但我得到了另一个几乎相同的关系:
public function complementaireMatch()
{
return $this->hasOne('App\Match', ["thuisGuid", "uitGuid", "pouleGuid"], ["uitGuid", "thuisGuid", "pouleGuid"]);
}
而这个可以很好地加载急切,所以我不知道真正发生了什么,因为一个有效,但另一个没有。
有人知道出了什么问题吗?提前致谢!
解决方案
您必须Compoships
在两个模型(Match
和PouleTeam
)中使用特征/模型:自述文件
推荐阅读
- string - How can I make my Athena SQL query faster
- html - 为什么第一个 div 内容会在顶部添加额外的填充/边距?
- python - 访问熊猫系列中的字符串
- drools - optaplanner Benchmarking failed 原因:java.lang.InstantiationError: org.drools.core.factmodel.ClassBuilderFactory
- c# - .Net 中的 AES 加密和 Node JS 中的解密
- python - 如何按日期对列(包含数字和字母)进行排序,python
- mysql - 在记事本中打开excel文件时格式更改
- ios - Google Cloud Platform 如何验证 iOS 捆绑包 ID?
- javascript - 当我尝试在按钮中放一个“X”字母时,它会稍微下降,CSS 和 React
- c - 为什么使用 sig_atomic_t 作为全局标志?