对laravel中模型的一点认识

Eloquent ORM是对象关系映射,是用来与数据库里面数据进行交互的。每一个数据库里面的表,都有一个对应的模型,我们可以利用模型定义一些属于这个模型对象拥有的一些方法。那么属于这个对象的都可以使用里面方法。那么,如何创建一个模型呢?

创建模型实例的最简单方法是使用make:model:

命令为:

php artisan make:model User

当你生成一个模型时想要顺便生成一个 数据库迁移,可以使用--migration或-m选项:

php artisan make:model User --migration

php artisan make:model User -m

一般情况下,数据表明确地指定了其它名称,否则将使用类的「蛇形名称」、复数形式名称来作为数据表的名称。也可以指定关联的表名字, protected $table = 'users',一旦模型关联了数据表。就可以从数据库中获取数据。

比如以下的一行代码,

use App\User;

$users = User::orderBy('id', 'desc')->paginate(24);

默认情况下 Eloquent 返回的都是一个Illuminate\Database\Eloquent\Collection对象的实例,包括通过get方法检索或通过访问关联关系获取到的结果。Eloquent 的集合对象继承了 Laravel 的集合基类(https://d.laravel-china.org/docs/5.5/collections),因此它自然也继承了数十种能优雅地处理 Eloquent 模型底层数组的方法。由于每个 Eloquent 模型都可以当作一个查询构造器(Laravel 的数据库查询构造器提供了一个方便、流畅的接口,用来创建及运行数据库查询语句。它能用来执行应用程序中的大部分数据库操作,且能在所有被支持的数据库系统中使用。Laravel 的查询构造器使用 PDO 参数绑定,来保护你的应用程序免受 SQL 注入的攻击。在绑定传入字符串前不需要清理它们。),所以你可以在查询中增加规则,然后使用get方法来获取结果。

创建模型实例:

要在数据库中创建一条新记录,只需创建一个新模型实例,并在模型上设置属性和调用save方法即可:当save方法被调用时,created_at以及updated_at时间戳将会被自动设置,因此我们不需要去手动设置它们。使用create方法通过一行代码来保存一个新模型。被插入数据库的模型实例将会返回给你。不过,在这样做之前,你需要先在你的模型上定义一个fillable(白名单)或guarded(黑名单)属性,因为所有的 Eloquent 模型都针对批量赋值(Mass-Assignment)做了保护。当用户通过 HTTP 请求传入了非预期的参数,并借助这些参数更改了数据库中你并不打算要更改的字段,这时就会出现批量赋值(Mass-Assignment)漏洞。例如,恶意用户可能会通过 HTTP 请求发送is_admin参数,然后对应到你模型的create方法,此操作能让该用户把自己升级为一个管理者。所以,在开始之前,你应该定义好哪些模型属性是可以被批量赋值的。你可以在模型上使用$fillable属性来实现。当用户通过 HTTP 请求传入了非预期的参数,并借助这些参数更改了数据库中你并不打算要更改的字段,这时就会出现批量赋值(Mass-Assignment)漏洞。例如,恶意用户可能会通过 HTTP 请求发送is_admin参数,然后对应到你模型的create方法,此操作能让该用户把自己升级为一个管理者。

你可能感兴趣的:(对laravel中模型的一点认识)