首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果在eloquent like soft delete LARAVEL中某列值为零,则排除某些行作为默认值

在 Laravel 中,Eloquent 提供了一种软删除的功能,即可以通过在数据库中将某列值设置为特定的值来表示该行数据已被删除,但实际上并不从数据库中删除。这个特定的值通常是一个时间戳,用于记录删除的时间。

如果想要在 Eloquent 中实现类似软删除的功能,只排除某些行作为默认值,可以通过以下步骤来实现:

  1. 在对应的数据库表中添加一个表示软删除的列,可以命名为 deleted_at。该列的默认值为零(或其他特定的值),表示该行数据未被软删除。
  2. 在 Laravel 模型类中使用 SoftDeletes trait,这个 trait 提供了软删除的相关功能。例如,在模型类中使用以下代码来启用软删除:
代码语言:txt
复制
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class YourModel extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
}
  1. 使用以上步骤后,你可以通过设置某一行数据的 deleted_at 列为零,将其排除在默认的软删除范围之外。可以使用以下代码来排除某些行:
代码语言:txt
复制
$yourModels = YourModel::where('columnName', '!=', 0)->get();

上述代码中,columnName 是代表你要排除的列的名称。

这样,通过以上步骤,你就可以在 Laravel 中实现类似软删除的功能,并且将某列值为零的行排除在默认的软删除范围之外。

关于 Laravel 的软删除功能的更多信息,你可以参考腾讯云的相关产品文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

3分钟短文:Laravel说要用软删除,可不要真删

,用法如下: Event::destroy(12); 这样一行就搞定了。...Laravel本身支持软删除,只需要进行少量的配置更改,以确保在执行delete或destroy时,模型的记录不会被实际删除。作为一个例子,我们修改Event模型以支持软删除。...首先创建一个新的迁移,将名为deleted_at的列添加到events表中: php artisan make:migration add_soft_delete_to_events --table=events...其实原理很简单,就是为模型追加一个全局作用域,为每个查询子句追加上如下筛选条件: WHERE deleted_at IS NULL laravel已经为我们写好这部分逻辑了,在模型内引入如下trait:...任何设置deleted_at为日期时间值的记录,都不会包含在任何查询结果中,因此看起来已经被删除了。

2.2K00

Laravel代码简洁之道和性能优化

经过一番调研之后发现了一个堪称神器的扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...,插入之前校验是否存在,存在则更新type等字段,不存在则插入双向数据 我们通过这个场景能非常好的体会laravel-upsert的强大,不仅减少了代码量,也减少了sql 查询次数,提升了性能。...第二个参数是唯一标识记录的列。除 SQL Server 外的所有数据库都要求这些列具有PRIMARY或UNIQUE索引。 提供要更新的列作为第三个参数(可选)。默认情况下,将更新所有列。...']); User::insertIgnore(['username' => 'foo']); 如果模型使用时间戳,upsert()并且insertIgnore()会自动为插入的值添加时间戳。...upsert()还将添加updated_at到更新的列中。

5.8K20
  • 通过 Laravel Eloquent 模型实现批量赋值和软删除

    作为一个成熟的 ORM 框架,Eloquent 在设计之初肯定不会没有考虑到这样的问题,实际上,我们可以借助模型类中的白名单属性或黑名单属性来解决这个困扰。...那排除在批量赋值之外的字段怎么设置呢?...实现原理 Eloquent 模型类为我们提供了「软删除」功能的支持。这就意味着,在 Laravel 中,我们不需要编写任何额外代码就可以实现对数据库记录的「软删除」。...该字段默认值为 NULL,表示没有被软删除。如果要在模型类中支持软删除,需要在对应模型类(在本例中是 Post 模型)中添加支持软删除的 Trait: delete 方法即可,底层会自动将数据表的 deleted_at 字段设置为当前时间,表示该记录已经被「删除」。

    2.5K10

    Laravel学习记录--Model

    ,'字段名'=>'值']) 简单查询 详情访问laravel查询构造器 $model->where()->first()//单行查询 ->find(1)//根据主键查询...['title])//选择列查询 ->where('id','>',1)->select('content')->get(); 辅助查询案例,跳过n行取m行 where->skip...中Eloquent还支持动态作用域,动态作用域指在查询过程中动态设置预置过滤器的查询条件,动态作用域与本地作用域类似,都是以scope作为前缀,调用方法也相同,不同的是动态作用域可以通过额外参数指定查询条件...muser(){ return $this->belongsTo('App\Muser','uid','uid')->withDefault(); } } 2.指定默认值...在调用save方法向Phone模型插入值 这里Eloquent自动在phones表中添加了uid字段,并插入正确的值 使用saveMany添加多个值 $user = \App\Muser::find

    13.6K20

    数据库相关知识总结

    ; 检索某个表中某些列的数据 select col_name1, col_name2 from table_name; 检索表中的数据且保持某列数据只出现一次(distinct) select distinct...表示零个或一个匹配,+表示一个或多个匹配 Like和Regexpde的差别 LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符)。...SQL聚集函数 函 数 说 明 AVG() 返回某列的平均值 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列值之和 聚集函数使用举例...这是一个重要的区别,WHERE排除的行不包括在分组中。...rope*的行 全文本布尔操作符 布尔操作符 说 明 + 包含,词必须存在 - 排除,词必须不出现 > 包含,而且增加等级值 值 () 把词组成子表达式(允许这些子表达式作为一个组被包含

    3.3K10

    GORM V2 写操作

    默认值 可以使用 GORM 标签 default 设置默认值,插入数据时,设置的默认值会被用于填充值为零值的字段。 需要注意的是,如果默认值本身是数据类型的零值,将不会被保存到数据库。...对于数据库表的设置默认值的字段,需要预先在声明模型的 struct 字段上使用标签 default 设置默认值,否则会插入该字段数据类型的零值。...gormDB.Where("email LIKE ?", "%88%").Delete(Student{}) gormDB.Delete(Student{}, "email LIKE ?"..., []int{8,9}).Delete(&Student{}) 04 修改 保存所有字段 调用 Save 方法更新数据,会保存所有字段,即使字段的值为字段类型的零值。...{} 参数,需要注意的是,当使用 struct 作为参数时,GORM 只会更新字段的值不是字段类型的零值的字段。

    2.8K10

    Gorm实战,轻松掌握数据库增删改查技巧!

    Age int64 `gorm:"default:18"` } 插入记录到数据库时,默认值 会被用于 填充值为 零值 的字段 注意 对于声明了默认值的字段,像 0、''、false 等零值是不会保存到数据库...gorm/clause" // 在冲突时,什么都不做 db.Clauses(clause.OnConflict{DoNothing: true}).Create(&user) // 在`id`冲突时,将列更新为默认值...`deleted_at` IS NULL 若要在查询条件中包含零值,可以使用map,该映射将包含所有键值作为查询条件,例如: // 如果想要在查询中包含0的字段,可以使用map来做 db.Where...`deleted_at` IS NULL // 可以看到Name字段不会更新,这是合理的,因为如果零值字段也更新,Student表中好多数据都会被更新为空 6.1 使用sql.NullString更新...(&student) Delete Flag 将 unix 时间戳作为 delete flag // go get -u gorm.io/plugin/soft_delete //db.AutoMigrate

    3.4K20

    Laravel 5.0 之命令及处理程序

    . ---- 本文中涉及的新功能都是关于 Commands 的,这些特性在 Laravel 旧版本中已经有了,但是在 Laravel 5.0 中变得更加好用了。...Command 可以在一个或多个 Handlers 之间传递, 每个 Handler 从 Command 中取出重要的信息并做某些操作来响应。...模型作为属性,就像前面的例子中那样,并且希望命令放入队列中执行而不是同步执行,那么必须要考虑到 Eloquent 模型的序列化,这可能会给你带来一些麻烦。...'], $input['length'], $input['type'], $input['level'])); 通常我们的表单请求会传递与属性相同 key 的数组,从数组或者请求对象中获得具体的值...如果你的命令是放入队列执行,不需要在处理程序的最后执行 $command->delete() 方法。只要你的处理程序没有抛出任何异常,Laravel 会假定它已经正确完成,并自动将其从队列中移除。

    1.7K60

    MySQL 从入门到实践,万字详解!

    函数 说明 avg() 返回某列的平均值 count() 返回某列的行数 max()、min() 返回某列最大值、最小值(忽略 null 值) sum() 返回某列之和(忽略 null 值) 示例:...如果分组列中具有 null 值,则 null 将作为一个分组返回。如果列中有多行 null 值,它们将分为一组。 group by 子句必须出现在 where 子句之后,order by 子句之前。...可以看到列 cust_id 被省略了,当满足下面条件时,列可以省略: 列定义为允许 null 值; 表定义时这个列给出了默认值,表示如果不给值则使用默认值。 如果不能省略却省略了,会报错。...要删除某行某列的值,可以将值修改为 null。...作为主键的列是不能允许 null 的。 default 关键字可以指定默认值,如果插入行没有指定默认值,那么将默认使用默认值。

    2K30

    Oracle查询优化-04插入、更新与删除数据

    ,则必须要插入表中的所有列,需要注意的,在插入值列表中所列出的值的顺序,必须与select * 查询语句所列出的列顺序完全一致。...---- 4.2 插入默认值 问题 定义表时可以为某些列定义默认值。...default关键字为相应列插入默认值,默认值在创建表时定义。...注意事项: 如果insert语句中没有包含默认值的列,则会添加默认值,如 C4 如果包含默认值的列,需要用default关键字,才回添加默认值,如C1 如果已经显示的设定了NULL或者其他值,则不会生成默认值...,如C2,C3 ---- 4.3 阻止对某几列插入 问题 举个例子,如果我们希望C4列的默认值为SYSDATE,这种列一般是为了记录数据生成的时间,不允许手工录入,该怎么办么?

    1.2K10

    ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析

    索引中相邻的『标记』间的数据行数。默认值8192 。 index_granularity_bytes:索引粒度,以字节为单位,默认值:10Mb。...如果WHERE/PREWHERE子句具有下面这些表达式(作为完整WHERE条件的一部分或全部)则可以使用索引:进行相等/不相等的比较;对主键列或分区列进行IN运算、有固定前缀的LIKE运算(如name...如果某列不是GROUP BY表达式的一部分,也没有在SET从句显示引用,结果行中相应列的值是随机的(就好像使用了any函数)。...列x包含每组行中的最大值,y为最小值,d为可能任意值。...如果该值被设置的太低,它将引发大量计划外的合并,这可能会消耗大量资源。 如果在两次合并的时间间隔中执行SELECT查询,则可能会得到过期的数据。

    1.3K10

    深入理解pandas读取excel,txt,csv文件等命令

    未指定的中间行将被删除(例如,跳过此示例中的2行) index_col(案例1) 默认为None 用列名作为DataFrame的行标签,如果给出序列,则使用MultiIndex。...如果读取某文件,该文件每行末尾都有带分隔符,考虑使用index_col=False使panadas不用第一列作为行的名称。...在某些情况下会快5~10倍 keep_date_col 如果连接多列解析日期,则保持参与连接的列。...convert_axes boolean,尝试将轴转换为正确的dtypes,默认值为True convert_dates 解析日期的列列表;如果为True,则尝试解析类似日期的列,默认值为True参考列标签...设置为在将字符串解码为双精度值时启用更高精度(strtod)函数的使用。默认值(False)是使用快速但不太精确的内置功能 date_unit string,用于检测转换日期的时间戳单位。默认值无。

    12.3K40

    深入理解pandas读取excel,tx

    未指定的中间行将被删除(例如,跳过此示例中的2行) index_col(案例1) 默认为None 用列名作为DataFrame的行标签,如果给出序列,则使用MultiIndex。...如果读取某文件,该文件每行末尾都有带分隔符,考虑使用index_col=False使panadas不用第一列作为行的名称。...在某些情况下会快5~10倍 keep_date_col 如果连接多列解析日期,则保持参与连接的列。...convert_axes boolean,尝试将轴转换为正确的dtypes,默认值为True convert_dates 解析日期的列列表;如果为True,则尝试解析类似日期的列,默认值为True参考列标签...设置为在将字符串解码为双精度值时启用更高精度(strtod)函数的使用。默认值(False)是使用快速但不太精确的内置功能 date_unit string,用于检测转换日期的时间戳单位。默认值无。

    6.2K10

    为什么 Laravel 这么优秀?

    、测试文件、Controller 等等;我们还将用 make:model 为 Course 生成一个 CURD Controller,相关的几个 commit 我列在下面了,每个 Commit 我都尽量做到了最小...强大的的辅助函数和丰富的 API,在下面的代码中我们甚至可以做到一行代码就完成课程的创建及依赖关系的更新。...中可以高效的使用 Eloquent ORM 实现各种查询;如上面的例子中我们使用了 withCount 来查询课程的学生数量、用 with 加载课程对应的教师;还可以指定生成的 SQL 查询只包含某几个字段如...如 Java 的 Spring 会在编译时为 Sprint Container 填充不同的对象,在使用时就能向容器获取不同的值。...而 Laravel Pipeline 的实现也很有趣;我们知道在常见的 Pipeline 设计中,大多会通过 for 循环来实现,而 Laravel 则采用的是最简单却又最复杂的实现 array_reduce

    26710

    绞尽胆汁的MySQL语法总结

    table 表名; 删除表中的某一行:delete from 表名 where 删除条件; 删除数据库:drop database 数据库名; 修改相关: 修改表名:alter table 旧表名 rename...修改字段:alter table 表名 modify 字段名 复制表:create table 表名 like 被复制的表名; 添加字段并设置默认值:alter table 表名 add 要添加的字段名...添加字段名的数据类型 default ‘默认值’; 修改字段中的某项数据:update 表名 set 字段名=要设置的值 where 修改数据的条件; 用户相关: 设置该用户从任意主机远程登录MySQL...by 要排序的字段名 asc; 将查询结果从大到小排(降序,desc):select*from 表名 order by 要排序的字段名 desc; 需要注意的是,在按照指定字段进行升序排列时,如果某条记录的字段值为...) from student 注意:所有的聚合函数都排除了NULL值 ,选择不包含非空的列进行计算(一般选择主键) 条件查询: where子句后跟条件 常用运算符 、=、<

    32920

    Laravel-Excel导出功能文档

    writer methods here }); 设置属性 可以在闭包中修改一些属性,很多属性可在配置文件中设置默认值 config/excel.php Excel::create('Filename'...,很多属性可在配置文件中设置默认值 config/excel.php Excel::create('Filename', function($excel) { $excel->sheet('Sheetname...model 你也可以使用->fromModel($model)去导出文件,$model是Eloquent model的实例,这个方法接收和fromArray相同的参数 自动产生表头 默认导出的文件中,...会使用数组Array(或者model的属性名)作为第一行(表头),你可以在配置文件中修改这一默认行为excel::export.generate_heading_by_indices,或者传递第5个参数...),告诉Excel怎样格式化固定的列 // 设置列格式为百分比 $sheet->setColumnFormat(array( 'C' => '0%' )); // 设置列单元格4位数字 $sheet

    13.3K500

    MySQL命令,一篇文章替你全部搞定

    ,而NOT NULL则表示在插入或者更新该列数据,必须明确给出该列的值; DEFAULT表示该列的默认值,在插入行数据时,若没有给出该列的值就会使用其指定的默认值; PRIMARY KEY用于指定主键,...(3)如果有NULL值,将值NULL作为一个分组进行返回,如果有多行NULL值,它们将分为一组 嵌套其他查询中的查询,称之为子查询。...NULL值或者在定义该列时给出去了默认值; 如果插入多行数据可以将多组值用逗号进行分隔即可。...在存储引擎为MyISAM和InnoDB的表中只能使用BTREE,其默认值就是BTREE;在存储引擎为MEMORY或者HEAP的表中可以使用HASH和BTREE两种类型的索引,其默认值为HASH。...当某条SQL语句发生时,自动执行某些其他的SQL语句的时候就需要使用到触发器。触发器只能响应:DELETE,INSERT,UPDATE这三个特定操作。 创建触发器?

    2.6K20
    领券