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

最为常用的Laravel操作(1)-Eloquent模型

$books = App\Book::with('author.contacts')->get(); // 渴求式加载指定字段 // 注: 使用这个特性时, id 字段是必须列出的 $users =...]); // 从中间表中移除相应的记录: 指定用户移除某个角色 $user->roles()->detach($roleId); // 从中间表中移除相应的记录: 指定用户移除所有角色 $user->...除了自定义访问器和修改器, Eloquent 还可以自动转换日期字段为 Carbon 实例甚至 将文本转换为 JSON ....默认情况下, Eloquent 将会转化 created_at 和 updated_at 列的值为 Carbon 实例, 该类继承自 PHP 原生的 Datetime 类, 并提供了各种有用的方法....你可以自定义哪些字段被自动调整修改, 甚至可以通过重写模型中的 $dates 属性完全禁止调整: class User extends Model { /** * 应该被调整为日期的属性

35200

3分钟短文:Laravel Carbon自定义日期时间格式

学习时间 只要成功安装了laravel的项目,已经内置了标准的carbon库文件,比如说在写入数据库字段 created_at 时是这样的格式: $item['created_at'] => "2020...,在模型中逐步引入了更加丰富的特性,比如说 casts 特性, 可以支持对模型数据查询后进行指定的格式化操作,省却了不少繁琐的操作。...在模型中添加以下声明: protected $casts = [ 'created_at' => 'datetime:Y-m-d', 'updated_at' => 'datetime:Y-m-d...或者在laravel5中使用 $dates 属性,功效与上面的方式相同: protected $dates = ['created_at', 'updated_at'] 读取的时候,该字段都会返回一个null...User 模型实例化之后,会根据 $dates 内定义的格式,调用Carbon进行实例化该字段, 那么 $user->created_at 就会返回 Carbon 对象。

3.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django 使用 ORM 操作数据库详解

    数据库 ORM 数据库的表(table ) 类(class) 记录,行数据(record) 对象(object) 字段(field) 对象的属性(attribute) ORM相对原始SQL的优劣势 优势...所有字段都具有的参数 db_column:修改字段名 primary_key:主键 verbose_name:字段别名,备注 unique:值是否唯一 null:数据空中的值,是否允许为空 blank...CharField max_length:最大长度值 DateField unique_for_date:该日期的值是否唯一 unique_for_month:该月份的值是否唯一...更改数据库表 删除模型类的步骤 删除表模型 删除项目中migraions文件夹下模型类生成的对应文件 删除数据库migraions表中的生成记录 删除数据表 导入数据 1.命令行添加 ?...teachers2 = Teacher.objects.get(nickname='Jack') print(teachers2, type(teachers2)) # 查询符合条件的多个值

    81020

    3分钟短文:Laravel模型读数据的那个“障眼法”

    日期时间格式化 先从最常用的地方着手,比如在迁移文件内使用的 timestamps方法,就是在表内生成 created_at和updated_at两个 datetime 类型的字段,用于标记该记录的创建时间和更新时间...为了测试方便,我们不需要写额外的代码,直接使用 tinker 命令行交互工具,在命令行输入: tinker 进入交互界面,然后我们使用模型查询一条 events 表的数据,并访问其属性: namespace...(){} 方法内添加要处理的逻辑,并返回相应的值即可。...下面是一个相对复杂的方法,根据不同情况返回字段name的值: [img] 如果在忽略列表,就使用纯小写字母,如果不是忽略列表的元素,首字母大写。最后组装为空格间隔的字符串返回。...这是laravel提供的语法糖,很好使! 写在最后 本文通过日期时间字段的格式化方法,引申出laravel模型的访问器功能,并通过实例介绍了具体的用法。

    94111

    Active Record基础

    Record 模式: 中,对象中既有持久存储的数据,也有针对数据的操作,Active Record 模式把数据存取逻辑作为对象的一部分,处理对象的用户知道如何读写数据。...Active Record 的约定 命名约定 Rails把模型的类名转换为复数,然后查找对应的数据表,Rails提供的单复数转换功能非常强大,类名应该使用驼峰命名: ?...创建模型关联后,Active Record 会查找这个字段。 主键: 默认情况下,使用证整数字段id作为表的主键。...还有一些可选的字段:created_at、updated_at、type、lock_version 创建 Active Record 模型 只需要继承 ApplicationRecord 类就行: class...迁移的代码储存在特定的文件中,可以通过rails命令执行。

    3.2K20

    ClickHouse(06)ClickHouse建表语句DDL详细解析

    数据分区是针对本地数据而言的,是数据的一种纵向切分。而数据分片是数据的一种横向切分。借助数据分区,在后续的查询过程中能够跳过不必要的数据目录,从而提升查询的性能。...一般表达式DEFAULT expr正常默认值。如果INSERT查询未指定相应的列,则将通过计算相应的表达式来填充它。物化表达式MATERIALIZED expr物化字段列。...这样的列不存储在表中,不能被SELECT 查询,但可以在CREATE语句的默认值中引用。别名表达式ALIAS expr字段别名。这样的列根本不存储在表中。...如果为表定义了约束,则将针对查询中的每一行检查每个约束。如果不满足任何约束,服务器将引发包含约束名称和检查表达式的异常。INSERT添加大量约束可能会对大型查询的性能产生负面影响。...Set:仅支持默认压缩。Join:仅支持默认压缩。

    82320

    搞定PHP面试 - MySQL基础知识点整理 - 数据类型和数据表管理

    VARCHAR VARCHAR 的最大长度是65535个字节,而 varchar(n) 中的 n 指字符长度,因此, n 的最大值是由当前字段的字符集决定的。...(但是实际上MySQL要求一个行的定义长度不能超过65535个字节,因此,除非表中只有这一个字段,否则 n 的值达不到上述的最大值)。...只分配真正需要的空间,更长的列会消耗更多的内存。 尽量避免使用 BLOB/TEXT 类型,查询时会使用临时表,导致严重的性能开销。如果一定要用,建议单独建表存储该字段。 3....日期和时间类型 类型 大小(字节) 范围 格式 用途 YEAR 1 1901 / 2155 YYYY 年份值 DATE 3 1000-01-01 / 9999-12-31 YYYY-MM-DD 日期值...DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值 TIMESTAMP 4 1970-01-01

    1.5K20

    那些年我们一起优化的SQL

    1-已删除', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` DATETIME...索引时 ,则要注意mysql在进行索引选择时,针对in是有特殊的代价计算规则的。...in查询在进行cost代价计算时(代价 = 元组数 * IO平均值),是通过将in包含的数值,一条条去查询获取元组数的,因此这个计算过程会比较的慢,所以Mysql设置了个临界值,5.6之后超过这个临界值后该列的...(11) 排序使用了索引 排序的字段不一定是要在最后,但是一定不能前一个字段不在查询条件中 索引: KEY idx_shop_create_status (shop_id,created_at,reserve_status...这样每次只查询100条,回表也只需要回表100条 # 避免深分页 select * from reserve where id>上次查询的数据id值 limit 100 # 延迟关联 避免大量回表 SELECT

    60131

    odoo ORM API学习总结兼orm学习教程

    例如states={'done':[('readonly',True)]},表示当state值为done时,将用户界面states所在字段在设置为只读(仅针对UI层面) 用法举例: state = fields.Selection...(针对普通字段,默认值为: True ,针对one2many和计算字段,包括属性字段(property fields,个人理解注册ir.property的字段)和关系字段,默认值为False store...定义记录是否在公司之间共享(没有值)还是仅由给定公司的用户访问。...此外,所有简单的存储字段(布尔值、整数、浮点值、字符、文本、日期、日期时间、选择、many2one)都会被提取;它们对应于模型表的列,并在同一查询中高效地获取。...实践发现,针对One2many字段,如果ids对应记录的Many2one字段没存储当前模型主键ID值时,无法使用该命令。

    13.5K10

    【MySQL】MySQL配置中sql_mode的作用

    MySQL配置中sql_mode的作用 不知道你有没有踫到过这种问题,在 MySQL8 默认的情况下,我们之前习惯的为 DateTime 类型指定的 0000-00-00 这种格式是无法插入或者修改数据的...CREATE TABLE `test_mode` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` datetime NULL DEFAULT...value: '0000-00-00 00:00:00' for column 'created_at' at row 1 很明显,默认情况下,0000 这种形式插入日期是不行的,这时我们就可以修改...,而 NO_ZERO_IN_DATE 则是针对日期和月份部分是否为 00 。...这里提到了一个严格模式的概念,严格模式控制 MySQL 如何处理 INSERT 或 UPDATE 等更改语句中的无效或缺失值,比如上面我们说过的日期和除零问题,如果没有 STRICT_TRANS_TABLES

    15410

    mysql自定义函数详解_mysql自定义函数详解

    大家好,又见面了,我是你们的朋友全栈君。 需求:对于数据库中的记录,如果有两条连续的数据的value字段的值相同,则发邮件通知相关人员。...新建数据表脚本如下: create table tb_config_record (id int ,status varchar(20), value varchar(20), updated_at datetime..., updated_by varchar(20), created_at datetime, created_by varchar(20)) ; 2、数据准备。...; end if; end loop ; close value_serials_cursor ; return result ; end // delimiter ; 4、执行结果 删除id=7的记录后...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2K10

    laravel 模型Eloquent ORM 添加编辑删除

    ,这时便需要 $guarded 属性 登场了,这个属性是用来定义不允许复制的字段的,但是up现在不需要保护表里的字段。...create 方法的返回值就是当前插入到数据库中的内容up可以通过返回值判断成功或者失败而实际开发中up经常需要返回新增数据的id那直接访问返回值的 id 属性即可。...数据中一眼就发现了后三条数据的不同,我们之前用 DB 插入到数据库中的数据 created_at 和 updated_at 字段都是空,而我们用模型插入和修改后 created_at 和 updated_at...Laravel 的 数据库迁移 有创建这个字段的方法 现在,当你在模型实例上使用 delete 方法, 当前日期时间会写入 deleted_at 字段。...同时,查询出来的结果也会自动排除已被软删除的记录。

    1.7K21

    MySQL 日期时间类型怎么选?千万不要乱用!

    构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp。...那我们就一步一步来分析他们的特点,这样我们根据自己的需求选择合适的字段类型来存储 (优点和缺点是比较出来的 , 跟父母从小喜欢拿邻居小孩子跟自己比一样的) datetime 和 timestamp datetime...所以就不用考虑时区的计算了。 时间范围是 timestamp 硬伤(1970-2038),当然 datetime (1000-9999)也记录不了刘备什么时候出生(161 年)。...用户前端输入的时间一般都是日期类型,如果存储 int 还需要存前取后处理 总结 timestamp 记录经常变化的更新 / 创建 / 发布 / 日志时间 / 购买时间 / 登录时间 / 注册时间等,并且是近来的时间...laravel 是国际化设计的框架,为了程序员方便、符合数据库设计标准,所以 created_at updated_at 使用了 timestamp 是无可厚非的。

    2.9K30

    谈谈对话式软件开发

    其次, tickets_list 的值不会是 JSON 对象,而是字符串,因为该值是 JSON 的字符串化表示。...ChatGPT 的建议包括检查优先级和状态是否与预期值匹配、空值或长列表的票务是否被优雅处理,以及所有日期字段是否存在并包含有效日期。 我选择了最后一种方法,ChatGPT 相应地修改了测试脚本。...这需要编写一个正则表达式来匹配日期,并在每张票的一组日期字段中循环应用该正则表达式。这感觉太复杂了,所以我要求将范围限制为仅检查一个日期字段: created_at。...即使这样仍然感觉太复杂,所以我们舍弃了循环,将测试简化为仅检查单张票中的有效日期。之后我们转向了下一个话题。...回应提到了优点(可维护性、重用性、并行执行、一致的日志记录、清晰度)和缺点(额外开销、复杂度、迁移时间、学习曲线)。

    10610

    通过 Laravel 查询构建器实现复杂的查询语句

    有时候,我们想要获取的并不是一行或几行记录,而是某个字段的值,你当然你可以查询到一行记录后从结果对象中获取指定字段的值,但是 Laravel 为我们提供了更便捷的语法: $name = '学院君'; $...你一定有过这样的经历,从数据库获取指定查询结果后,以主键 ID 值为键,以某个字段值为值构建关联数组,以前,你可能不得不遍历查询结果构建数组才能解决这样的问题,在 Laravel 中,我们只需在查询构建器上调用...注意,我们在传递参数到 pluck 方法的时候,键对应的字段在后面,值对应的字段在前面。...in查询 IN 查询也很常见,比如我们需要查询的字段值是某个序列集合的子集的时候。...')->get(); 日期查询 关于日常查询,查询构建器为我们提供了丰富的方法,从年月日到具体的时间都有覆盖: DB::table('posts')->whereYear('created_at',

    30.2K20
    领券
    首页
    学习
    活动
    专区
    圈层
    工具