Laravel框架ORM关联hasOne,belongsTo,hasMany
- 原创
- |
- 浏览:3026
- |
- 更新:
方法/步骤
首先我们假定你顺利安装了laravel5.4.x框架并且配置了数据库的连接.那我接下来做一些初始化的工作,包括创建控制器,生成model文件和迁移文件及数据填充.
其中红框两处表示:
生成外键约束
$table->integer('user_id')->unsigned()
$table->foreign('user_id')->references('id')->on('users');
同步生成对应填充的user数据, 并使用user_id
'user_id'=>factory(App\User::class)->create()->id,
迁移文件及数据填充,这里我填充2条测试数据做演示.执行上面的命令检查你的数据库对应的表里面是否有数据
那我们接下来说说hasOne的定义和使用,结合我们上面建立的表解释一下hasOne和belongsTo,对于users表来说,有一条users数据就有一条orms数据,这里我们假设这个表的数据是完整的.所以这两种表之间的hasOne和belongsTo关系如下
users hasOne orms
orms belongsTo users
我们在添加一条路由,并在控制器中使用测试我们的hasOne关联是否好用
Route::get('/orm/index', 'OrmController@index')->name('orm.index');
从上面的图片从属关系我们发现hasOne顺利执行,并且也得到了我们想要的结果,接下来看belongsTo
- 相关内容未经授权抓取自百度经验
hasmany关联在实际也很常见,例如一篇文章有多条评论,一个用户有多个订单等等.我们创建一张books表来看hasmany的使用,还是一样准备测试数据
php artisan make:model Book -m
php artisan migrate
php artisan tinker
factory (App\Book::class,5)->create();
在user的model中定义hasMany,并在orm的测试控制器的index方法中查询对应的数据是否显示正常
致谢DHH 的Ruby on rails敏捷开发框架, 经验中的图片使用Ruby on rails框架中的关联关系的图片.本人是把当时学rails的关联关系的经验,迁移到laravel框架中,如果有哪里写的对,麻烦各位大神指出.
END
注意事项
- mysql外键约束的使用,是为了保证数据的一致性和完整性
- 关联关系图片使用了Ruby on rails的关联关系图片
- 你也可以把$books = $user->books()->get()->toArray();简写成$books = $user->books->toArray();的形式

































