四时宝库

程序员的知识宝库

laravel框架中Eloquent ORM的使用数据表的创建与数据填充

为了介绍Eloquent ORM的使用,首先需要构建数据表并添加相应的数据。要完成数据表的创建和数据填充一般需要三个步骤:一是在数据库中创建对应的数据表,二是对应每个数据表创建模型类文件,三是完成数据库的填充。在数据表的创建和数据填充过程中,可以使用artisan命令来创建相应的数据迁移文件。数据表创建时可以通过“php artisan make:migration create_blogs_table--create=blogs”命令创建“blogs”数据表,同理创建其他的数据表迁移文件,然后通过“php artisan migrate”命令完成数据库中数据表的创建。在创建数据表模型类时可以使用“php artisan make:model Blog”命令来创建对应的模型类。在实现数据填充时可以通过“php artisan db:seed”命令执行数据填充。下面分别介绍三个步骤的实现细节和实现代码。

(1)建立几个数据表。

这里使用数据库迁移创建了5个表,第一个是文章表(blogs表),第二个是作者表(authors表),第3个是评论表(comments表),第4个是专题表(subjects表),第五个是文章与专题关系表(blogs subjects表)。每个表除了记录相应的内容外,还记录了表之间的关系,这里的关系假设如下:一篇文章只能有一个作者,一个作者只能发表一篇文章,即一对一关系;一篇文章有多条评论,即一对多关系;一篇文章可以在多个专题中,一个专题可以记录多篇文章,即多对多关系。这里涉及到的对应关系分别是一对一关系、一对多关系和多对多关系,其中多对多关系在blog_subjects表中进行记录。

(2)根据数据表建立Eloquent模型类。

上文提到,可以使用“php artisan make:model Blog”命令来创建对应的模型类,这里定义了前四个表的模型类,而关系数据表在模型类中用于构建关系,通过$fillable定义可以批量赋值内容,批量赋值就是通过模型类的构造函数将数据表中的一行数据一次性赋值,实际上是通过Model类的fill()函数来完成的,当然也可以通过对模型类的属性依次直接赋值。通过$table定义数据表的名称,如果没有定义则会使用默认数据表名。通过hasOne()、hasMany()、belongsTo()和belongsToMany()函数可以定义表间的关系。

(3)为数据表填充数据。创建数据填充类BlogSeeder并继承自Seeder类,改写run()方法。需要注意的是,在执行artisan命令时,实际上执行的是Laravel默认数据填充文件DatabaseSeeder.php中的run()方法,需要在该方法的call()方法中添加创建的填充文件,即添加代码“$this->call(BlogSeeder::class);”。

这里在文件数据表(blogs表)中添加三篇文章,题目(title字段)分别为“PHP的未来”、“Java的未来”和“HTML5的未来”,为了简化文章没有添加内容。在作者表(author表)中添加了三个作者,分别是“PHP的作者”、“Java的作者”和“HTML5的作者”,记录在name字段中,同时在blog_id字段记录发表的文章id号。在评论表(comments表)中添加两条评论,都是对“PHP的未来”文章的评论,即在blog_id字段中记录了该文章在数据表中的id号。在专题表(subjects表)中添加两个专题,分别是“计算机语言”和“编程语言”,其中PHP和Java既属于计算机语言也属于编程语言,而HTML5只属于计算机语言。对于上面的实例可能有些与实际不符,这里只是假设这样。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接