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

3分钟短文:Laravel模型创建数据条目的2个语法糖

引言 经过之前章节对于路由,控制器等知识做了很多的储备,接着我们开始与数据库交互,摆脱繁复且难以维护的SQL操作,laravel提供了MVC的M模型功能。...[img] 本期我们开始讲模型中,如何插入新条目,或者更新既有条目。...这样laravel在处理模型数据的时候,会默认更新此二字段。 然而,对于写入数据库的那些数据,并不是所有字段都会允许写入的。在模型内我们可以手动指定哪些字段可以写,哪些字段不可以写。...新建 or 更新 接着介绍laravel模型的几个语法糖。一个常规的场景,比如在写入数据时,先判断数据库表内是否有该条记录,如果没有就创建,如何有则返回。...::create(['name' => 'Coffee and Laravel']); } 返回的总是一个 Event 对象,所以如果想要接着操作其他属性,那就接着写好了: $event->venue

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

    Laravel Eloquent 模型关联关系(下)

    从性能上来说,渴求式加载更优,因为它会提前从数据库一次性查询所有关联数据,而懒惰式加载在每次查询动态属性的时候才会去执行查询,会多次连接数据库,性能上差一些(数据库操作主要开销在数据库连接上,所以在开发过程中如果想优化性能...,如果返回的文章结果是列表的话,需要遍历获取作者信息,假设要循环 N 次的话,加上文章模型本身的获取,总共需要进行 N + 1 次查询,而 PHP 对数据库的连接是短连接,每次都要重新连接数据库,所以从性能角度考虑不建议使用这种方式...我们将这种加载叫做懒惰渴求式加载,这种加载可以通过 load 方法实现: $users = User::all(); $condition = true; if ($condition) {...以文章与标签为例,完全可以这样通过文章模型新增标签模型,同时更新中间表记录: // 插入单条记录 $post->tags()->save( new Tag(['name' => $faker->...(31); $comment->content = 'Laravel学院致力于提供优质Laravel中文学习资源'; $comment->save(); 再次查看评论模型及对应文章模型数据,可以看到文章模型的更新事件和评论模型的更新时间已经一致了

    19.6K30

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

    引言 通过前几篇文章视图和路由的介绍,我们通过模型对象操作数据库表。 laravel模型的精巧设计使得我们操作数据层逻辑更加得心应手。 [图片] 本文我们来说说模型在读写数据中所使用的技巧。...日期时间格式化 先从最常用的地方着手,比如在迁移文件内使用的 timestamps方法,就是在表内生成 created_at和updated_at两个 datetime 类型的字段,用于标记该记录的创建时间和更新时间..."; $e->Save(); 这里完成了模型的创建和属性赋值,并写入数据库。...save方法会返回一个 Events 模型对象,直接访问其方法: $e->name // 输出 "Let's Learn a Little Laravel Together" 正是我们定义的访问器的修改策略...这是laravel提供的语法糖,很好使! 写在最后 本文通过日期时间字段的格式化方法,引申出laravel模型的访问器功能,并通过实例介绍了具体的用法。

    94111

    如何在Ubuntu 14.04上使用Ansible部署高级PHP应用程序

    否则,SSH将允许连接,但不会向用户显示shell。这可以使用user模块完成,并将shell设置为/bin/bash(或您首选的shell)。...它应该返回这样的东西。...第6步 - 为数据库配置PHP应用程序 在此步骤中,我们将MySQL数据库密码保存到.env应用程序的文件中。 就像我们在上一个教程中所做的那样,我们将更新.env文件以包含我们新创建的数据库凭据。...作为示例应用程序的一部分,有一个cron作业每分钟运行一次,更新数据库中的状态条目,以便应用程序知道它正在运行。...此作业在运行时更新数据库以显示其正在运行。 我们现在有一个工作示例Laravel应用程序,其中包括正常运行的cron作业和队列工作程序。

    10.7K60

    PHP-web框架Laravel-Eloquent ORM(一)

    Laravel是一种基于PHP语言的Web开发框架,其中的Eloquent ORM功能为开发者提供了便捷的对象关系映射(ORM)功能,可用于对数据库进行CRUD操作,同时也可以轻松地定义模型关联和查询。...下一、模型定义Eloquent ORM是Laravel框架中的一个基于Active Record模式的ORM,通过模型与数据库表进行映射,实现数据的增删改查操作。...在Laravel框架中,每一个Eloquent ORM模型都对应着一个数据库表,通过继承Illuminate\Database\Eloquent\Model类来定义模型。下面是一个示例: 'Jane Doe', 'email' => 'janedoe@example.com',]);更新数据更新单个模型:$...user = User::find($id);$user->name = 'Jane Doe';$user->save();更新多个模型:User::where('id', '>', 5)->update

    87951

    3分钟短文:Laravel模型一对一一对多关系真的乱吗?

    引言 laravel模型不但提供了可供数据库操作的增删改查,还附加了很多功能,最关键的要数模型的关联关系。本文说一说简单的一对一,和一对多关系。用代码说话,让大家更直观地理解。...都是数据库的条目,一定是走SQL查询了吧? 没错,laravel也的确是这样做的。...比如写入一条contact,同时更新phone_number。我们只需在关联关系基础上,链式调用save方法,传入一个关联模型实例。如果要写入多条的,就传入一个 关联模型实例的数组。...::first();$phoneNumber = new PhoneNumber;$phoneNumber->number = 123123123;$contact->phoneNumbers()->save...($phoneNumber); 上面是查询出某条contact,然后更新关联模型的手机号。

    2.1K30

    通过修改Laravel Auth使用salt和password进行认证用户详解

    hasValidCredentials($user, $credentials)) { if ($login) { $this->login($user, $remember); } return true...自动管理timestamp列 */ public $timestamps = false; /** 覆盖Laravel中默认的getAuthPassword方法, 返回用户的password和salt字段...($name, Closure $callback) { $this->customProviderCreators[$name] = $callback; return $this; } 闭包返回了...用户点击邮件中的链接在重置密码页面输入新的密码,Laravel通过验证email和token确认用户就是发起重置密码请求的用户后将新密码更新到用户在数据表的记录里。...第一步需要配置Laravel的email功能,此外还需要在数据库中创建一个新表password_resets来存储用户的email和对应的token CREATE TABLE password_resets

    3K30

    Laravel学习记录--Model

    更新前先查询 $flight = App\Flight::find(1); $flight->name = 'new name'; $flight->save(); 批量更新 App\Flight:...Laravel 自带的 软删除功能 就利用全局作用域从数据库中提取「未删除」的模型。编写自定义的全局作用域可以提供一个方便、简单的方法来确保给定模型的每个查询都受到一定的约束。...嵌套的渴求式加载 渴求式加载指定字段 带条件约束渴求式加载 懒惰式渴求式加载 当以属性方式访问Eloquent关联关系的时候,关联关系数据是[懒惰式加载]因为都是用到的时候才执行查询,这就意味着要多次对数据库进行查询才能返回需要的结果...,对于数据库查询优化角度来说,显然不合理,有没有方法能一次就返回所有的关联查询的结果呢?...使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]的好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照我的另一个博客 - - - Laravel

    13.6K20

    Laravel基础

    (原始查找) DB facade实现CURD(原生SQL语句操作数据库 ) 3.1.1 插入数据 (返回bool 插入是否成功) $result = DB::insert('insert into student..., ['abcd']); laraevl内置函数dd,可人性化的打印数组:dd($result); 3.2 数据库操作 - 查询构造器 3.2.1 查询构造器简介 Laravel 查询构造器(query...,如果不存在则返回该类的对象,调用save才得以保存 $result = Student::firstOrNew(['name' => 'make']); $result = $result->save...(); dd($result); 3.3 Eloquent ORM 修改数据 通过模型更新数据 (最后返回bool类型,单条数据是否修改成功) $student = Student::find(1051...); $student->name = 'aj2'; $result = $student->save(); 结合查询语句批量更新 (返回int类型 受影响行数) $result = Student

    7.8K30

    3分钟短文:说说Laravel模型关联关系最单纯的“一对一”

    引言 关系型数据库提供了非常好用的数据关联绑定模式,使用SQL语句可以方便地进行关联数据查询和操作。 如果所有关联关系放到数据库层面操作,势必非常不便。...[img] 所以,laravel模型提供了关联关系,本文就来梳理梳理那些用法。 代码时间 我们不要PPT似的念稿子,罗列出所有的关系模型,那样不直观也不是高效学习的方式。...需要特别注意的是,类似下面的写法,返回结果是不同的: $user = User::find($id); $user->profile; // 返回 Profile 对象 $user->profile()...有了关联查询,自然就有关联更新,用法如下: $profile = new Profile; $profile->telephone = '12345678'; $user = User::find(1)...; $user->profile()->save($profile); 有了关联更新这种写操作,自然就有了关联删除,模型方法的调用而已: $user = User::find($id); $user->

    2K31

    Laravel 数据库连接配置和读写分离

    今天开始讲如何在 Laravel 中操作数据库,Laravel 为我们提供了多种工具实现对数据库的增删改查,在我们使用 Laravel 提供的这些数据库工具之前,首先要连接到数据库。...针对读写分离数据库的连接,Laravel 数据库底层会自动判断,如果是查询语句会使用读连接,如果是数据库插入、更新、删除等操作会使用写连接。..., 'engine' => null, ], 然后我们在命令行运行 php artisan migrate,就会将数据库迁移应用到写数据库,因为数据库更新也属于写操作,所以此时自动判读使用写连接...->get(); User::onWriteConnection()->save(); 注:关于数据库的各种增删改查操作,后面会一一介绍。...本系列教程首发在学院君网站(xueyuanjun.com),你可以点击页面左下角阅读原文链接查看最新更新的教程。

    5.5K20

    基于 Redis 有序集合实现热门浏览文章排行榜

    今天我们以 Laravel 项目热门浏览文章排行榜为例进行实战演示。 准备模型类和数据表 开始之前,我们先创建文章表、模型类和控制器: ?...root DB_PASSWORD=root 创建 redis_demo 数据库,运行 php artisan migrate 在这个数据库中创建 posts 数据表。...Support\Facades\Redis; public function show(Post $post) { $post->increment('views'); if ($post->save...,还需要再次到数据库中去查询完整的文章记录,此外,我们还要按照传入的 ID 顺序对返回结果进行排序,否则数据库查询返回的结果顺序又变成基于 ID 值大小的排序了。...本系列教程首发在学院君网站(xueyuanjun.com),你可以点击页面左下角阅读原文链接查看最新更新的教程。

    1.8K40

    3分钟短文:Laravel模型写操作很简单,大多数人容易用错

    引言 前几期我们通过laravel模型的读操作方法,实现了很多花样繁多的条件筛选查询, 可以说足以应对大多数的场景。 ? 本期说说写操作的那些事,包括创建,修改,这些直接操作数据库数据的操作方法。...但是,save方法太宽泛了,在创建数据时,用于写入数据库;在更新数据时,同样用于写操作。有点泛泛而谈的意思。框架贴心地准备了专门用于创建条目的 create 方法。...创建条目本身的逻辑没有太过复杂,我们接着看看更新操作,因为需要额外查询一次数据库,将存在的条目取出来, 然后对其数据重新操作,再更新到数据库,所以要绕多一些弯弯。...@deway.com'; $contact->save(); 我们使用find根据id查找条目,并返回一个Contact模型对象。...直接操作更新该对象的属性,最后调用save存档。这样就完成了数据库更新。 更直观地,可以使用框架的update方法,用于更新数据。传入的数组必须是数据库模型定义好的对应字段名。

    53920
    领券