例如,在纯PHP中,此下面的链接演示了使用保留字命名列的问题
Syntax error due to using a reserved word as a table or column name in MySQL
但是,我在应用程序的多个表中都同时使用了“键”和“值”作为列名,而这些表我已经开发了15个月,而这些名称从未出现过任何问题。我可能会在列名中使用更多保留字。
Laravel是否通过反引号将其转义,因为答案表明应该手动进行?如果Laravel没有转义它们,为什么可以在表中为该列使用任何名称,而在创建或更新模型时不会出现任何问题?
答案 0 :(得分:3)
永远不要使用关键字来命名列,这会带来麻烦。
肯定会起作用;一段时间,也许永远,但是也许在您真的不需要这样的问题的那一天,或者从现在开始的几年以后,当您忘记了所有这些问题时,就不再需要了。
与闭着眼睛开车比较。这段时间也很好。
答案 1 :(得分:1)
简短的回答:是的,可能是,但是,是的,Laravel在大多数情况下都正确地引用了它们。 (在原始查询中不太可能出现的情况)
如果可以帮助,请使用非保留字。例如,Sibling2
可以命名为order
。
我已经在一个非Laravel项目中工作,该项目的名称确实为sort_order
。用反引号(order
正确地报价可以解决由于运行诸如`order`
之类的查询而引起的MySQL语法问题。但是,对于不熟悉PHP,MySQL或两种语法的开发人员实现的此简单问题,我遇到了多个不同的解决方法。当然,正确的解决方法很简单(用引号引起来),但是没有相同背景的人可能会(并且确实)想出了一个根本不需要存在的问题的后向解决方案。
此外,带空格的列名称... * shudders *