网站首页 > 技术文章 正文
引言
上一篇我们说到了Laravel中是有两种集合,一个是 BaseCollection,一个是 EloquentCollection。后者继承前者,而且对部分方法进行了重载。分清楚之间的细微区别,可以让你在编程中不迷惑。
本文从一整套的例子,从数据库建表,写模型,写控制器,到模板渲染,从一个小bug,讲到集合的深层次原因。
学习时间
首先创建数据库表,我们不使用迁移,直接上SQL。
只有3列,一个是主键,一个是标题,一个是文本内容。注意数据库字段,表,均声明了utf-8编码。
然后创建模型 About,指定表名,我们此处略去,直接看控制器的一个方法:
public function index()
{
$about = About::where('title', 'about-me')->get(); //id = 3
return view('about', compact('about'));
}
SQL查询条件是根据标题返回所有的条目,然后将结果集通过 view 视图进行渲染。
然后重点来了,视图内这样写大家看会不会有问题!?
@section('title')
{{$about->title}}
@stop
@section('content')
{!! $about->content !!}
@stop
如果不出意外,开启 debug = true 访问该页面时,你大概率会得到下面的错误提示:
Property [title] does not exist on this collection instance.
(View: E:\laragon\www\newsite\resources\views\about.blade.php)
大家思考一下,这个故障是如何发生的?下一节我们给出解答。
正确写法
Laravel模型的get() 方法返回一个集合(EloquentCollection)。如果需要使用集合的属性,你首先需要进行遍历。像下面这样在视图文件内写:
@foreach ($collection as $object)
{{ $object->title }}
@endforeach
EloquentCollection 内的每一个元素,都是一个 About Model 对象。所以可以使用 $object->title 获取到title属性。
如果你的需求很简单,就是要第一个元素的标题,简写如下:
{{ $collection[0]->title }}
如果你要获取集合内的第一个元素,使用 first 方法:
{{ $collection->first() }}
深入一步
我们知道了问题来自 get() 方法,那么,如果要获取查询数据集的第一条数据,应该用哪个呢?find()或者first() !
都会返回一个 About Model 对象,在视图中就可以愉快地写:
{{ $object->title }}
写在最后
本文通过实际的例子,讲解了laravel模型中查询数据结果集的 find get first 的细微区别,希望大家可以熟练掌握。
Happy coding :-)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
猜你喜欢
- 2024-09-15 laravel 使用 mongodb(laravel 使用gmail邮箱发送验证码)
- 2024-09-15 Laravel的这10个用法,你都没用过吧
- 2024-09-15 PHP Laravel框架用户权限管理,按钮级别控制(详细)
- 2024-09-15 3分钟短文:太爽了,用Laravel写API接口
- 2024-09-15 Laravel5.8简明教程(laravel-admin)
- 2024-09-15 3分钟短文:Laravel请求对象方法极多,可不是花拳绣腿
- 2024-09-15 「php」从零学laravel框架(二):注册登录API
- 2024-09-15 Laravel 5中如何添加Form功能(laravel 伪静态)
- 2024-09-15 告别 $arr[0]: PHP 和 Laravel 中更优雅的数组处理方式
- 2024-09-15 Laravel + Serverless Framework 快速创建 CMS 内容管理系统
- 1512℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 556℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 504℃MySQL service启动脚本浅析(r12笔记第59天)
- 482℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 481℃启用MySQL查询缓存(mysql8.0查询缓存)
- 461℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 441℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 438℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)