看来mysql表字段名称可以加盖或不加盖。我正在与另一位同事一起工作,看起来字段名称有上限,这意味着我需要在Laravel中使用所有上限。有没有办法解决这个问题??
例如,我的images
表格有一个id
字段,而他的images
表格有IMG_ID
作为字段名称,因此我必须使用大写字母或重命名所有字段?!
结果是,如果我从他的数据库中获取图像对象,我必须$image->IMG_ID
或者不能正常工作。我不想使用帽子。
要明确的是,如果我做ImagesClassName::where('img_id', $someId)
它就可以了。如果我以后做$someImage->img_id;
它不起作用
不确定这是否是预期的行为。
答案 0 :(得分:3)
我认为这是预期的行为。当你使用:
ImagesClassName::where('img_id', $someId)
它将转到MySQL查询,对于列名称的MySQL上限并不重要。
相反,Eloquent根据Database中的表中的列设置属性。因此,如果您在表格中有列IMG_ID
来访问媒体资源,则需要使用$someImage->IMG_ID
而非$someImage->img_id
或$someImage->img_ID
,因为只有第一个(确切的列名称)可以使用
关系完全相同。你应该在任何地方使用相同的情况,否则你可能会多次加载它们。
如果您想要名称为IMG_ID
的列并访问它并使用img_id
设置,您可以为此新属性创建accessor and mutator,然后您可以使用小写操作在大写列上。