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

为你自己学laravel。

model的部分。

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


在这里插入图片描述

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

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

为你自己学laravel - 15 - model的更新和删除_第1张图片

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

第一种更新方法

为你自己学laravel - 15 - model的更新和删除_第2张图片

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

为你自己学laravel - 15 - model的更新和删除_第3张图片

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


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


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

第二种更新方法

为你自己学laravel - 15 - model的更新和删除_第4张图片

为你自己学laravel - 15 - model的更新和删除_第5张图片

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

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

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


验证查询一下:

image-20231220215803655

Book::where('available', true)

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

批量更新

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

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

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

删除

为你自己学laravel - 15 - model的更新和删除_第6张图片

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

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

第一种删除方法

为你自己学laravel - 15 - model的更新和删除_第7张图片

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

第二种删除方法

为你自己学laravel - 15 - model的更新和删除_第8张图片

这是使用类的方法,就是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的魔术语法。

为你自己学laravel - 15 - model的更新和删除_第9张图片

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

为你自己学laravel - 15 - model的更新和删除_第10张图片

$table->dataTime('deleted_at');

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

为你自己学laravel - 15 - model的更新和删除_第11张图片

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

$table->softDeletes();

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

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

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

为你自己学laravel - 15 - model的更新和删除_第12张图片

$table->dropSoftDeletes();

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

为你自己学laravel - 15 - model的更新和删除_第13张图片

php artisan migrate

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

为你自己学laravel - 15 - model的更新和删除_第14张图片

为你自己学laravel - 15 - model的更新和删除_第15张图片


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

为你自己学laravel - 15 - model的更新和删除_第16张图片

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


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

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


在php artisan tinker当中进行验证。

为你自己学laravel - 15 - model的更新和删除_第17张图片

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

为你自己学laravel - 15 - model的更新和删除_第18张图片

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


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

为你自己学laravel - 15 - model的更新和删除_第19张图片

总结

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

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

$b3->delete()

Book::destroy(4)

软删除的方法:

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

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

为你自己学laravel - 15 - model的更新和删除_第20张图片

你可能感兴趣的:(为你自己学laravel,laravel,android,php)