如果模型是Company它的表名,companies如果我们不覆盖protected $table属性。如果是Book,表名称是books. 那么为什么不companysLaravel 如何理解英语和语法呢?这些词列在哪里?
Illuminate/Pluralizer负责获取英语单词的变形。它定义了一组不可数单词,例如:
public static $uncountable = [
'audio',
'bison',
...
'species',
'swine',
'traffic',
'wheat',
];
Run Code Online (Sandbox Code Playgroud)
内部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',
)
)
Run Code Online (Sandbox Code Playgroud)