Laravel 学习总结二:get () 和 first () 的区别、@each () 的用法和添加外键约束
get() 和 first() 的区别
get() 获取的是一组 Model 数据,而 first()得到的是一个 Model 数据。
Laravel 里的每一个 Model 数据,或者说每一条数据库记录取出来的时候都是用PHP的 stdClass 来封装的,一条 Model 数据就是一个 stdClass(stdClass是一个没有属性和方法的空类,一般用来创建一个匿名对象或者将非对象类型转换成对象,这样我们就可以方便的添加和删除属性)。
- get() 获取到的是一个 collection 对象,其中的 items 属性是一个数组,每个数组元素就是一个 stdClass 对象。
- first() 获取到的单个 stdClass 对象,因此我们可以直接在这个对象上面直接获取各种属性或者调用在 Model 里定义的关系 (eloquent relationship)。
@each() 的用法
@each() 用来在 blade 模板中循环输出内容,只需一行代码,样式十分简洁。
- 使用 @foreach()
@if(count($projects) > 0) @foreach($projects as $project) @include('projects._name') @endforeach @else @include('projects._empty') @endif
- 使用 @each()
@each('projects._name', $projects, 'project', 'projects._empty')
四个参数分别为:
- 循环的单个视图。
- 需要循环的数据。
- 循环的单条数据在视图中的变量名。
- 循环的数据为空时渲染的视图。(可选项)
添加外键约束
意为在该表中添加一个$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
user_id
字段与user
表中的id
字段关联,并且在删除时产生级联,即user
表中删除id
为n的记录,当前表中所有user_id
为n的记录也会被一并联动删除。
运行迁移后:
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: