Mar*_*yra 7 laravel eloquent laravel-4
我有一个表书:带有ID(int)和ISBN(字符串)ISBN是唯一的密钥.我有另一张桌子,我把书中的isbn存储起来.在书模型上我有:$ this-> hasMany('Other','isbn','isbn');
但这忽视了伊斯本.你知道这样做的方法吗?
临时修复:
$this->primaryKey = 'isbn';
return $this->hasMany('Other', 'isbn');
Run Code Online (Sandbox Code Playgroud)
这是不可能的 - 只有少数情况下您希望链接到表上的唯一列,该列也不是 pk。也就是说,其他框架已经开发了更改主键的方法,但尚未有人正式要求 Laravel 这样做。您可以在 GitHub 上写一个提案,它可能会出现在未来的版本中。
暂时看一下您的具体示例 - 当您在急切加载情况下使用关系时,这可能会产生意想不到的结果,并且它仅占关系的一侧。当您在“Other”上添加“belongsTo”时,您将遇到相反的问题。
可以通过 isbn 建立关系;然而,这将采取 Book hasOne ISBN、ISBN ownsTo Book、ISBN hasMany Others、Other ownsTo ISBN 的形式;访问属性看起来像$book->isbn->othersor $other->isbn->book。
我的最后一个建议是扩展 Book,并将新类的主键设置为isbn并将所有关系都基于该模型。这并不理想,但比其他一些解决方案要少一些痛苦。
| 归档时间: |
|
| 查看次数: |
8169 次 |
| 最近记录: |