1.模型类的创建;下面先容模型类的创建和操作。一样平常模型类存放在laravel\app目录下,当然也可以根据实际需求放置在其他位置,只要符合composer自动载入的规范就可以。这里在laravel\app目录下建立一个User类并继续自Model类,这样一个Eloquent ORM模型就创建了,常日也称它为模型类,$timestamp属性用于表示Laravel框架自定义韶光字段无效,由于在设计表的时候没有用这个字段。就这样大略,一个模型类就创建完成了,虽然你以为自己什么都没做,但是这个类已经与一个数据表天生了工具关系映射,通过操作这个模型类,就可以操为难刁难应的数据表了。下面先通过这个模型类获取表中所有的数据,来看看它到底是怎么事情的,只须要通过“User::all();”语句就可以实现上述功能。详细实例代码如下:
2.模型类的实现事理;在新创建的模型类中实在什么都没有做,就可以实现对数据库操作的干系功能,而这些功能都是在继续类Model中完成的。但是,没有无条件的便利,由于底层是事先实现好的,在利用时就须要准守它的规则,那么须要对底层的实现事理有一个清晰的认识才能更好地去运用。下面就通过实例来先容,逐步理解模型类实现的流程,这里也将其分为两个阶段:第一阶段是Eloquent ORM查询布局器的天生,第二阶段是操作命令的实行。本实例是查询数据表中的所有数据。首先,先容第一阶段,这里给出部分代码细节:
这里首先通过“new static;”语句天生一个模型类实例,用到了后期静态绑定,天生App\User类的实例,在本实例中,由于没有通报任何参数,以是布局函数并没有实行故意义的事情,这部分将在后期封装数据时再来先容。对付后期静态绑定可以在PHP的主要性子中理解干系内容。接下来将通过“$instance->newQuery()”语句天生Eloquent ORM查询布局器。

Eloquent ORM的底层利用了查询布局器来实现,这里通过newBaseQueryBuilder()函数创建一个根本查询布局器,而这个根本查询布局器中的数据库连接终极也是通过数据库掌握器(Illuminate\Database\DatabaseManager类实例)的connection()函数实现的。在完成根本查询布局器的实例化后,通过newEloquentBuilder()函数对该查询布局器进行封装,实现Eloquent查询布局器的创建。
在完成Eloquent查询布局器的实例化后,也就获取了与数据库的连接、SQL语法规则和结果处理的功能,由于对数据库的操作不再以数组的形式交互,而是通过这个模型类实例来与数据库进行交互。数据表名称是通过Model类工具的getTable()函数获取的,如果工具中的$table属性存在值,则利用该数据表名,如果不存在,则以模型类名的复数作为数据表名,即通过代码“str_replace('\\','',Str::snake(Str::plural(class_basename($this))));”实现,这便是为什么创建的模型类没有指天命据表名,依然可以操作数据库中的数据表的缘故原由,在本实例中,默认的数据表名为“users”。