thinksns+(plus)简单小结

1、withTrashed()

除了真实删除数据库记录, Eloquent 也可以「软删除」模型。软删除的模型并不是真的从数据库中删除了。事实上,是在模型上设置了 deleted_at 属性并将其值写入数据库。如果 deleted_at 值非空,代表这个模型已被软删除。如果要开启模型软删除功能,你需要在模型上使用 Illuminate\Database\Eloquent\SoftDeletes 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);就查询出来。

posted @ 2019-12-13 13:52  怼宝灿灿  阅读(369)  评论(0编辑  收藏  举报