Laravel的命名惯例

时间:2017-01-24 12:51:04

标签: laravel

如果模型为Company,如果我们不覆盖companies属性,则表名为protected $table。如果是Book,则表名为books。那么为什么不companys laravel如何理解英语和语法?这些单词在哪里列出?

2 个答案:

答案 0 :(得分:4)

Illuminate/Pluralizer负责获取英文单词的变形。它定义了一组不可数字,如:

public static $uncountable = [
    'audio',
    'bison',
    ...

    'species',
    'swine',
    'traffic',
    'wheat',
];

Pluralizer内部使用doctrine/inflector来定义实际逻辑(由几个不同的作者从几个不同的php项目中收集)来反映一个单词。 Inflector具有插入单数化单词的一般规则,还定义了未反射的单词或具有不规则复数的单词。

private static $plural = array(
    'rules' => array(
        ...
        '/(x|ch|ss|sh)$/i' => '\1es',
        '/(?:([^f])fe|([lr])f)$/i' => '\1\2ves',
        '/us$/i' => 'uses',
        ...
    ),
    'uninflected' => array(
        '.*[nrlm]ese', '.*deer', '.*fish', ..., 'people', 'cookie'
    ),
    'irregular' => array(
        'atlas' => 'atlases',
        'axe' => 'axes',
        'beef' => 'beefs',
        ...
        'trilby' => 'trilbys',
        'turf' => 'turfs',
        'volcano' => 'volcanoes',
    )
)

答案 1 :(得分:1)

Laravel非常聪明,可以使用真实的单词。例如,它会将media表用于Media模型。

如果您在源代码中看到,您将看到Laravel如何构建表名:

return str_replace('\\', '', Str::snake(Str::plural(class_basename($this))));

首先,Laravel使用Pluralizer::plural()创建复数,然后将其转换为蛇案。