1、withTrashed()
除了真实删除数据库记录, Eloquent 也可以「软删除」模型。软删除的模型并不是真的从数据库中删除了。事实上,是在模型上设置了 deleted_at
属性并将其值写入数据库。如果 deleted_at
值非空,代表这个模型已被软删除。如果要开启模型软删除功能,你需要在模型上使用 IlluminateDatabaseEloquentSoftDeletes
trait。
软删除模型将会自动从查询结果中排除,不过,如果你想要软删除模型出现在查询结果中,可以使用 withTrashed 方法。
2、declare(strict_types=1)
strict_types=1 及开启严格模式,默认是弱类型校验,php7引入的严格类型检查模式
的指定语法。
3、orm中with的用法
从同一个接口返回分类和属于该分类的商品。面对这样的一个需求,可以写出如下的代码:
public function category($categoryId)
{
$category = Category::with('goods')->find($categoryId);
return $category;
}
这里的with方法会将分类之下的商品一起查询出来,而且不会出现N+1影响性能的问题。在实际项目中,我们往往不是把全部商品查询出来,比如我们要把分类下面上架的商品查询出来,采用闭包函数的方法:
public function category($categoryId)
{
$category = Category::with(['goods' => function ($query) {
$query->where('is_sale', true);
}])->find($categoryId);
return $category;
}
这里的with方法可以理解为给分类下面的商品一个条件,符合该$query->where('is_sale', true);就查询出来。