laravel 模型find()的怎么修改默认字段id_3分钟短文:Laravel ORM 模型用法纲要

本文介绍了Laravel框架中的Eloquent ORM,包括模型的创建、数据库操作以及find()方法的使用。通过示例展示了如何自定义模型的默认字段id,以及如何处理模型集合,包括添加自定义字段和指定数据库表名。同时提到了模型的其他配置,如主键设置、自动填充时间戳等。
摘要由CSDN通过智能技术生成

引言

前两期为了说明laravel框架提供的数据库操作能力,直接使用DB门面操作, 而没有引入更为强大的eloquent orm功能。从本期开始,我们就分次把 eloquent的一些简要知识点,为大家提炼演示一下。主要以代码为主,配以简要说明。

2557b38e4fc48798a6d05b01cfa4d745.png

学习时间

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 :-)

我是@程序员小助手,持续分享编程知识,欢迎关注。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值