用Laravel封装sql字段名?

时间:2014-10-20 11:30:51

标签: mysql laravel eloquent

看来mysql表字段名称可以加盖或不加盖。我正在与另一位同事一起工作,看起来字段名称有上限,这意味着我需要在Laravel中使用所有上限。有没有办法解决这个问题??

例如,我的images表格有一个id字段,而他的images表格有IMG_ID作为字段名称,因此我必须使用大写字母或重命名所有字段?!

结果是,如果我从他的数据库中获取图像对象,我必须$image->IMG_ID或者不能正常工作。我不想使用帽子。

要明确的是,如果我做ImagesClassName::where('img_id', $someId)它就可以了。如果我以后做$someImage->img_id;它不起作用 不确定这是否是预期的行为。

1 个答案:

答案 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,然后您可以使用小写操作在大写列上。