Laravel 10 记录一次 多对多关联由于表名问题(英文语法转换)导致的查询不到bug
参考
- https://segmentfault.com/q/1010000018450663
- https://learnku.com/docs/laravel/10.x/eloquent-relationships/14889#a93d4c
- https://learnku.com/docs/laravel/10.x/eloquent-relationships/14889#6bf722 获取中间表的字段 withPivot
环境
软件/系统 | 版本 | 说明 |
---|---|---|
windows | 10 | |
php | 8.1.9-Win32-vs16-x64 | |
composer | 2.5.5 | |
laravel | ^10.10 | |
mysql | 8.0.28 |
正文
多对多查询,定义了三张表:maps
,map_monster_category
,monster_categorys
, 其中map_monster_category
为两表的中间表包含:map_id
,monster_category_id
。
按照网上教程查询不到数据,表名规则和Laravel文档内一致,通过查询SQL发现表名被按照英语语法复数形式进行了转换,转换后的sql为:
select
`monster_categories`.*,
`map_monster_category`.`map_id` as `pivot_map_id`,
`map_monster_category`.`monster_category_id` as `pivot_monster_category_id`
from
`monster_categories`
inner join `map_monster_category` on `monster_categories`.`id` = `map_monster_category`.`monster_category_id`
where
`map_monster_category`.`map_id` in (1)
其中的 monster_categorys
被转换成为了 monster_categories
.
解决办法
- 按照英文语法设置表名
- 在模型中手动指定表名。
class MonsterCategory extends Model
{
use HasFactory;
/**
* 数据表名称
*/
protected $table = 'monster_categorys';
}
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/17647186.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/17647186.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
标签:
laravel
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2021-08-21 AngularJs 12 使用 Editor.md 实现 Markdown 编辑器 并解决 因为样式冲突导致 列表(ul、ol) 没有前缀数字、符号的bug
2021-08-21 AngularJs 12 使用 Editor.md 实现 Markdown 编辑器 并实现前端渲染,并解决 marked is not defined 报错的问题