3分钟短文:Laravel ORM 模型用法纲要

2022-10-11 21:35:23 181 0
魁首哥
引言 前两期为了说明 laravel 框架提供的数据库操作能力,直接使用 DB 门面操作,而没有引入更为强大的 eloquent orm 功能。从本期开始,我们就分次把 eloquent 的一些简要知识点,为大家提炼演示一下。主要以代码为主,配以简要说明。 学习时间 Eloquent 其实是一个 ActiveRecord 类型的 ORM。这是一个位于数据库操作之上的一个中间层,不仅仅是对于整张表的操作,更能细化到每行记录的增删改查。 创建一个模型类非常简单,只用继承系统的模型就可以了:use IlluminateDatabaseEloquentModel;class Contact extends Model {} 因为遵循的是约定大于配置的惯例,所以上述模型如不指定表名,默认就是默认数据库的 contacts 表了。 对于数据库插入新条目,则可以便捷地使用模型的方法执行,比如下面这样:public function save ( Request $request ){$contact = new Contact ( ) ;$contact->first_name = $request->input ( ‘first_name’ ) ;$contact->last_name = $request->input ( ‘last_name’ ) ;$conatct->email = $request->input ( ’email’ ) ;$contact->save ( ) ;return redirect ( ‘contacts’ ) ;} 创建一个合约,并使用传入的表单数据填充。接着是使用模型对数据的查询:public function show ( $contactId ){return Contact::findOrFail ( $contactId ) ;} 这里有一个语法糖,就是 findOrFail,如果找到就返回一个模型,找不到就返回默认错误页面。上述方法会对 Contact 模型调用 toArray 方法进行格式化,然后返回一个 JsonResponse 对象的响应体。 如果返回的模型想要手动定制一下,那么在查询结果集中,使用 Collection 提供的格式化功能就好了。public function vips ( ){return Contact::where ( ‘vip’, true ) ->get ( ) ->map ( function ( $contact ) {$contact->formalName = “The exalted {$contact->first_name} of the {$contact->last_name}s”;return $contact;} ) ;} 大家注意,get 方法返回的是一个 Eloquent Collection,包含了 Model 模型的集合。所以使用 map 遍历集合元素时,每个元素其实都是一个独立的 Contact 对象,直接给对象追加属性就可以增加字段了。 创建模型 除了上面我们使用手动创建模型文件之外,laravel 还为我们提供了命令行方式快捷创建。使用下面的指令:php artisan make:model Contact 这样会在 App 命名空间下生成一个标准的模型文件 Contact.php,内容如下:namespace App;use IlluminateDatabaseEloquentModel;class Contact extends Model{} 如果数据库表还没有创建,你想要把迁移文件的骨架代码也生成出来,只需在生成指令上追加参数如下:php artisan make:model Contact –migration 有些时候,我们维护一些数据库和表,想要动态切换某个模型所对应的数据库表,那么只需在模型文件内手动指定表名即可:protected $table = ‘contacts_secondary’; 如果你使用的主键不是 id,是自定义的字段名,那也可以手动指定:protected $primaryKey = ‘contact_id’; 这个 contact_id 是系统维护,而非自增的,你需要显式声明不要自增这个字段:public $incrementing = false; 如果创建的表内有 created_at,updated_at 等等标准字段,而在数据库表的字段默认值内允许为 NULL,或者默认为 NULL。你想要他们自动更新为当前系统时间,只需要添加这个配置项:public $timestamps = false; 存储的日期时间格式,也可以自定义:protected $dateFormat = ‘Ymd His’; 好了,关于模型的基本属性和常用方法,也就这些了。 写在最后 本文通过演示 laravel 框架模型创建,以及通过演示默认配置项到自定义配置内容,为大家展示了 Model 所具备的一些很赞的特性。Happy coding :- ) 我是 @程序员小助手,持续分享编程知识,欢迎关注。

收藏
分享
海报
0 条评论
181
上一篇:面试官:从 URL 输入到页面展现到底发生了什么? 下一篇:如何启用 Apache 的 PHP-FPM 多实例

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码