Closed SiGool closed 12 months ago
一对多关联出现问题。 模型定义了一个belongsTo关系方法不生效,idStr是关联目标表的唯一键并不是primary key
public function liveStreamingPlatform() { // 我这里$ownerKey参数传入idStr $this->belongsTo(Platform::class, 'live_streaming_platform_idStr', 'idStr') }
调试发现问题:
$relation->getRelated()->getKeyName()
源码使用以上:从模型返回的relation对象获取目标关联模型,然后目标关联模型调 getKeyName方法会返回默认的主键:id。就是说如果刚好跟我一样,目标关联模型如果没有设置 $primaryKey属性,我这里是要设置成idStr。否则就会跟预期不生效了,因为他总会返回$primaryKey属性值无视我传入的$ownerKey参数
解决建议: 方法一,待测试稳定:
public function liveStreamingPlatform() { return tap($this->belongsTo(Platform::class, 'live_streaming_platform_idStr', 'idStr'), function(BelongsTo $r) { $r->getRelated()->setKeyName($r->getOwnerKey()); }); }
我现在 通过 返回这个关联对象前,设置正确这个关联目标模型的$primaryKey属性
方法二:
$relation->getOwnerKey()
// 获取回传入的$ownerKey参数,不要再去获取目标关联模型的主键
建议优化下,这个问题
Description:
一对多关联出现问题。 模型定义了一个belongsTo关系方法不生效,idStr是关联目标表的唯一键并不是primary key
Steps To Reproduce:
调试发现问题:
源码使用以上:从模型返回的relation对象获取目标关联模型,然后目标关联模型调 getKeyName方法会返回默认的主键:id。就是说如果刚好跟我一样,目标关联模型如果没有设置 $primaryKey属性,我这里是要设置成idStr。否则就会跟预期不生效了,因为他总会返回$primaryKey属性值无视我传入的$ownerKey参数
解决建议: 方法一,待测试稳定:
我现在 通过 返回这个关联对象前,设置正确这个关联目标模型的$primaryKey属性
方法二:
// 获取回传入的$ownerKey参数,不要再去获取目标关联模型的主键
建议优化下,这个问题