当我们在存储mongo数据的时候,整型字段存储的值为NumberLong格式,那么如果这个id来自于MySQL,在使用MySQL模型与MongoDB关联查询时就会踩到这个坑,从jenssegers/laravel-mongodb生成的SQL可以看到类似这样的结果:
| |
可是我们的期望是:
| |
这里的13、15是MySQL里的一条记录,在mongo里的值为NumberLong(13), 所以查询结果永远为空。
找遍了源码,没有一个更好的解决方法,后来只能使用Eloquent模型提供的属性修改器来实现:
在MySQL的模型里对相应字段使用修改器(这里以id为例):
| |
方法名:get属性名大驼峰Attribute, ex: object_id -> getObjectIdAttribute
框架源码参考:getAttribute