为你自己学laravel - 15 - model的更新和删除

发布时间:2023年12月21日

为你自己学laravel。

model的部分。

这一次讲解的是model当中怎么从数据库当中更新数据和删除数据。


在这里插入图片描述

先从数据库当中抓出来资料。

当然我们是使用php artisan tinker进入到终端机。

在这里插入图片描述

我们的做法是想要将available这个栏位修改成为true。

第一种更新方法

image-20231220215311452

上面我们就是修改了对象当中的一个栏位,修改了之后,我们要记得使用$b1->save()这种方法。

image-20231220215350266

上面的这张图的意思,就是我们进行验证的时候,查看的时候,看到了,真的是已经变成了1。


sqlite当中并没有资源处理true或者false,所以它使用的tiny integer这种东西处理布尔值。


上面的做法,就是更新的第一种做法了。

第二种更新方法

image-20231220215538776

image-20231220215555285

$b2->update(['available' => true])

这种做法就是直接呼叫update方法,就可以做到了。

你就不需要呼叫save方法了。


验证查询一下:

image-20231220215803655

Book::where('available', true)

这个做法,就是查询一下,所有的available的字段是true的book了。

批量更新

Book::where('available', true)->update(['available' => false])

这是要将所有在架子上面的书,都变成了false。

更新,就是将资料抓出来,然后更新它。

删除

image-20231220221826447

这个是第一步,就是先在资料库当中新增了一个书籍。

我现在的目的,就是想要删除掉,我已经添加的这一本。

第一种删除方法

image-20231220221917596

这是使用实例的方法,就是先将数据库当中的资料,先抓出来,抓出来了之后,再砍掉的,这种做法。

第二种删除方法

image-20231220222021543

这是使用类的方法,就是destroy的方法。

软删除-逻辑删除

电商网站当中,删除不是真正的删除的哦~。

在laravel的ORM当中,算是有半内建的套件,是可以用的。

这个动作,我们叫做soft-delete

laravel的做法是:帮你建立一个栏位,delete_at,默认值是null的。

如果我们进行soft-delete,我们就会将删除的时间,写到delete_at这个栏位。

我们要做软删除,就要新增一个栏位。

我们要对资料表做栏位的修改,我们应该通过migration来做的。

image-20231220223302791

php artisan make:migration add_deleted_at_to_books

我们这里,是使用了,migration的魔术语法。

image-20231220223343347

上面就是为我们新增好的migration。

image-20231220223416281

$table->dataTime('deleted_at');

这是一种创建软删除的方法。

image-20231220223516753

laravel当中会提供一个东西,就是上面的内容。

$table->softDeletes();

有了这个方法,你就不需要自己写了。

我们是推荐这一种写法的。

然后在migration的down当中应该写什么呢?

image-20231220223641499

$table->dropSoftDeletes();

然后就可以跑到终端机当中执行了:

image-20231220223721580

php artisan migrate

然后,我们去数据库当中看一看,发现是真的有诶~

image-20231220223804466

image-20231220223817836


要注意,不是你在数据库当中添加了这个delete_at栏位之后就有效果的,你还是需要在model当中动一些手脚的。

image-20231220224157135

就是像是上面这个样子的,就是要在model的类当中,使用模组use SoftDeletes;


假设你是不希望在数据库表当中,用于软删除的栏位是delete_at这个栏位的话。

你也是可以在model当中进行设定的。


在php artisan tinker当中进行验证。

image-20231220224342078

这个当然是删除的一般的步骤了。

image-20231220224409888

但是在数据库当中,还是有数据的,delete_at这个栏位是有时间的。


我软删除了之后,我还是想要找到他的,我怎么找到他呢?

image-20231220224538929

总结

$b1->available = true
$b1->save()

$b2->update(['available' => true])

$b3->delete()

Book::destroy(4)

软删除的方法:

第一是在migration当中使用操作数据库表的栏位,新增delete_at这个栏位。

第二是在model当中要使用use SoftDelete这种套件。

image-20231220224502438

文章来源:https://blog.csdn.net/weixin_41748874/article/details/135119510
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。