Laravel 学习总结二:get () 和 first () 的区别、@each () 的用法和添加外键约束

get() 和 first() 的区别

get() 获取的是一组 Model 数据,而 first()得到的是一个 Model 数据。
Laravel 里的每一个 Model 数据,或者说每一条数据库记录取出来的时候都是用PHP的 stdClass 来封装的,一条 Model 数据就是一个 stdClass(stdClass是一个没有属性和方法的空类,一般用来创建一个匿名对象或者将非对象类型转换成对象,这样我们就可以方便的添加和删除属性)。

  • get() 获取到的是一个 collection 对象,其中的 items 属性是一个数组,每个数组元素就是一个 stdClass 对象。

Michael 的 Laravel 学习总结二:get() 和 first() 的区别、blade 模板中 @each() 的用法 以及添加外键约束

  • first() 获取到的单个 stdClass 对象,因此我们可以直接在这个对象上面直接获取各种属性或者调用在 Model 里定义的关系 (eloquent relationship)。
    Michael 的 Laravel 学习总结二:get() 和 first()的区别、blade 模板中 @each() 的用法 以及添加外键约束

@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')

四个参数分别为:

  1. 循环的单个视图。
  2. 需要循环的数据。
  3. 循环的单条数据在视图中的变量名。
  4. 循环的数据为空时渲染的视图。(可选项)

    添加外键约束

    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    意为在该表中添加一个 user_id 字段与 user 表中的 id 字段关联,并且在删除时产生级联,即 user 表中删除 id 为n的记录,当前表中所有 user_id 为n的记录也会被一并联动删除。

运行迁移后:

Laravel 学习总结二:get () 和 first () 的区别、@each () 的用法和添加外键约束

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!