Laravel踩坑总结(三)Laravel查询排除指定列引发的一次异常总结

引子:

Laravel中排除指定列查询,没有专门的方法。所以我参考官网文档写了一些查询作用域,在使用该查询作用域中引发了一些问题。目前已经解决,先记录下来,方便大家查阅。

先来看看类的继承结构:

image.png

Model类的如下:

image.png

但是进入网站使用报错:

image.png

具体错误信息如下()省略部分字段:

image.png

问题的原因分析:

问题的本质原因是因为我们在Category的Model中加入了上面我们定义的exclude()作用域。

image.png

如果不加exclude()执行的SQL语句如下:

image.png

加上exclude()方法后SQL语句如下如下:

image.png

注意到articles与articlecategory中都包含了id,categoryid,updatedat,createdat等。所以我们需要给列名加上前缀,以示区分。

处理后的Model方法如下:

image.png

总结:之前这个地方写的很粗糙,导致变动比较大,现在如果在项目中使用exclude()就不用做过多的操作了。目前已经测试上线

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容