我有一个旧数据库,其中使用 delete (删除) 1/0进行软删除,而不是 deleted_at 是否可以在模型级别使用已删除的字段名称?因此我仍然可以自动依赖Deleted_at,但也不会显示那些没有 deleted_at 但具有 deleted = 1的旧记录,表明该记录已被软删除?>
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'users';
//protected consider deleted=1 as deleted
public function store(Request $request)
{
$user = new User;
$user->save();
}
}
答案 0 :(得分:0)
我尝试了一下,并创建了如下的特征:
namespace App\Traits;
use Illuminate\Database\Eloquent\SoftDeletes;
trait MySoftDeletes
{
use SoftDeletes;
protected function runSoftDelete()
{
$query = $this->newQueryWithoutScopes()->where($this->getKeyName(), $this->getKey());
$time = $this->freshTimestamp();
$columns = [$this->getDeletedAtColumn() => 1];
$this->{$this->getDeletedAtColumn()} = 1;
if ($this->timestamps && ! is_null($this->getUpdatedAtColumn())) {
$this->{$this->getUpdatedAtColumn()} = $time;
$columns[$this->getUpdatedAtColumn()] = $this->fromDateTime($time);
}
$query->update($columns);
}
}
...这似乎可以正常工作,并更新is_deleted列并将其设置为1而不是时间戳。
但是,考虑到is_deleted也可以为0(不为null),因此将其视为已删除。您是否知道是否可以更改默认位置,然后检查is_deleted null或is_deleted = 0?
或使用https://github.com/tenantcloud/laravel-boolean-softdeletes