为你自己学laravel。
model的部分。
这一次讲解的是model当中怎么从数据库当中更新数据和删除数据。
先从数据库当中抓出来资料。
当然我们是使用php artisan tinker
进入到终端机。
我们的做法是想要将available这个栏位修改成为true。
上面我们就是修改了对象当中的一个栏位,修改了之后,我们要记得使用$b1->save()
这种方法。
上面的这张图的意思,就是我们进行验证的时候,查看的时候,看到了,真的是已经变成了1。
sqlite当中并没有资源处理true或者false,所以它使用的tiny integer这种东西处理布尔值。
上面的做法,就是更新的第一种做法了。
$b2->update(['available' => true])
这种做法就是直接呼叫update方法,就可以做到了。
你就不需要呼叫save方法了。
验证查询一下:
Book::where('available', true)
这个做法,就是查询一下,所有的available的字段是true的book了。
Book::where('available', true)->update(['available' => false])
这是要将所有在架子上面的书,都变成了false。
更新,就是将资料抓出来,然后更新它。
这个是第一步,就是先在资料库当中新增了一个书籍。
我现在的目的,就是想要删除掉,我已经添加的这一本。
这是使用实例的方法,就是先将数据库当中的资料,先抓出来,抓出来了之后,再砍掉的,这种做法。
这是使用类的方法,就是destroy的方法。
电商网站当中,删除不是真正的删除的哦~。
在laravel的ORM当中,算是有半内建的套件,是可以用的。
这个动作,我们叫做soft-delete
。
laravel的做法是:帮你建立一个栏位,delete_at,默认值是null的。
如果我们进行soft-delete,我们就会将删除的时间,写到delete_at这个栏位。
我们要做软删除,就要新增一个栏位。
我们要对资料表做栏位的修改,我们应该通过migration来做的。
php artisan make:migration add_deleted_at_to_books
我们这里,是使用了,migration的魔术语法。
上面就是为我们新增好的migration。
$table->dataTime('deleted_at');
这是一种创建软删除的方法。
laravel当中会提供一个东西,就是上面的内容。
$table->softDeletes();
有了这个方法,你就不需要自己写了。
我们是推荐这一种写法的。
然后在migration的down当中应该写什么呢?
$table->dropSoftDeletes();
然后就可以跑到终端机当中执行了:
php artisan migrate
然后,我们去数据库当中看一看,发现是真的有诶~
要注意,不是你在数据库当中添加了这个delete_at栏位之后就有效果的,你还是需要在model当中动一些手脚的。
就是像是上面这个样子的,就是要在model的类当中,使用模组use SoftDeletes;
假设你是不希望在数据库表当中,用于软删除的栏位是delete_at
这个栏位的话。
你也是可以在model当中进行设定的。
在php artisan tinker当中进行验证。
这个当然是删除的一般的步骤了。
但是在数据库当中,还是有数据的,delete_at这个栏位是有时间的。
我软删除了之后,我还是想要找到他的,我怎么找到他呢?
$b1->available = true
$b1->save()
$b2->update(['available' => true])
$b3->delete()
Book::destroy(4)
软删除的方法:
第一是在migration当中使用操作数据库表的栏位,新增delete_at这个栏位。
第二是在model当中要使用use SoftDelete这种套件。