手动软删除

Manual Soft Delete

我继承了一个旧的 MySQL 数据库,并为它编写了一个 eloquent 模型。

用户 table 中有一个名为 "active" 的列,它接受 1 或 0。

我在想。有没有一种方法可以在模型中编写查询,以便在查询模型时不包括非活动用户?很像软删除?

function __construct()
{
    return parent::where( 'active', '1' );
}

..似乎有效但仍包含 NULL 值

您可以像这样在您的模型中使用方法;

public function scopeActive($query)
{
    return $query->where('active', 1);
}

然后您可以使用 Users::active()->get(); 获取活跃用户,这将允许您在需要时仍然访问非活跃用户。

或者像这样添加一个静态方法;

public static function active()
{
    return self->where('active', 1)->get();
}

您可以将其与以下内容一起使用; Users::active()。由于这是一个 Eloquent 集合,您还可以查询结果集合。

要自动优化模型的结果,请使用全局范围; here in docs. An example can be found from the following site, here