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

Laravel 5.7:为什么我的模型create()和save()方法在被调用时会创建2条记录?

Laravel是一种流行的PHP开发框架,用于快速构建Web应用程序。在Laravel 5.7中,create()和save()方法用于创建和保存模型对象。如果在调用这些方法时发现会创建两条记录,可能是由于以下几个原因导致的:

  1. 数据库连接问题:首先,确保你的数据库连接配置正确。检查数据库配置文件(config/database.php)中的主机名、用户名、密码和数据库名称是否正确。另外,确保数据库服务已经启动。
  2. 数据库表配置问题:确认模型对应的数据库表是否正确。Laravel默认使用模型名称的复数形式作为表名,可以在模型类中通过定义$table属性来指定表名。确保表名和模型类名的对应关系正确。
  3. 数据填充问题:create()和save()方法会根据传入的数据创建新的记录。如果传入的数据有误,可能会导致创建多条记录。请确保传入的数据格式正确,并且没有重复的键值。
  4. 模型事件问题:create()和save()方法会触发模型的事件,例如creating和saving事件。如果在这些事件中有对模型进行了保存操作,可能会导致创建多条记录。请检查模型类中是否定义了这些事件,并确保事件中没有保存模型的代码。
  5. 模型关联问题:如果模型中定义了关联关系,并且在创建记录时自动保存关联模型,可能会导致创建多条记录。请检查模型关联的定义,并确保关联模型没有重复创建或保存的逻辑。

如果以上解决方法都不起作用,建议检查Laravel框架的版本和相关插件的兼容性,或者参考Laravel官方文档、社区论坛等资源进行更深入的排查。

对于Laravel 5.7的推荐腾讯云产品和产品介绍链接地址如下:

  1. 腾讯云数据库 MySQL版(https://cloud.tencent.com/product/cdb):可作为Laravel应用程序的数据库存储解决方案,提供高可用性和强大的性能。
  2. 腾讯云云服务器 CVM(https://cloud.tencent.com/product/cvm):用于托管和运行Laravel应用程序的虚拟服务器,提供稳定可靠的计算资源。
  3. 腾讯云对象存储 COS(https://cloud.tencent.com/product/cos):适用于存储Laravel应用程序中的静态文件、图片、视频等多媒体资源。
  4. 腾讯云容器服务 TKE(https://cloud.tencent.com/product/tke):用于构建和管理容器化的Laravel应用程序,提供弹性扩展和高效部署的能力。

注意:本回答不涉及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等云计算品牌商。

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

相关·内容

laravel框架模型和数据库基础操作实例详解

findOrFail()查找不存在记录时会抛出异常 $student=Student::find(5); //主键为5记录 var_dump($student['attributes']); //查询构造器使用...(); //保存 echo $bool; 从数据库里取得某条记录时间戳时,默认取得是按日期格式化好时间戳,如果想取得原本时间戳,则在模型里增加asDateTime方法。...(4)firstOrNew()以属性查找记录,若没有则会创建实例。...若需要保存,则自己调用save方法() $student=Student::firstOrNew(['vip_name'= 'mmm']); $student- save(); echo $student...修改数据 使用save方法更新模型 使用update方法更新数据(create相对应,Eloquent模型类还支持使用update方法更新数据,同样要用到批量赋值) //通过模型更新数据 $student

2.8K20
  • 为什么 Laravel 这么优秀?

    为什么 Laravel 这么优秀 Laravel 一直是心中最优雅后端框架,为了向更多的人解释为什么 Laravel 这么优雅?框架本身都做了什么操作?比起其他框架优势在哪里等?...准备从一个后端最常用 CURD 例子说起,一步一步阐述这过程中 Laravel 都是怎么完成;以及~大家~()为什么喜欢用 Laravel。...猜这也是为什么 Laravel 不需要实现其他优秀路由算法如 Radix Tree 原因吧。...Create Course # 接下来我们来看在 Laravel 中是如何优雅保存数据,这部分记录你可以参考下面这几个 commit: feat: create course chore: switch...绝大多数方法参数中,你可以随意注入任意数量参数;这也是最喜欢一点。

    20710

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

    代码时间 我们在构建一个hello world页面的时候,已经介绍了如何使用laravel命令行脚手架创建模型文件,以及通过迁移功能创建数据库表。这样就把数据操作衔接起来了。...= 'The Mocha Factory'; $event->save(); 大家注意,在对象创建之后,我们直接操作对象属性,为其赋值,最后调用save方法,就完成了数据新建所有动作。...新建 or 更新 接着介绍laravel模型几个语法糖。一个常规场景,比如在写入数据时,先判断数据库表内是否有该条记录,如果没有就创建,如何有则返回。...::create(['name' => 'Coffee and Laravel']); } 返回总是一个 Event 对象,所以如果想要接着操作其他属性,那就接着写好了: $event->venue...firstOrCreate 方法还接收第二个参数,用于指定第一个参数查询语句不成立时,创建数据条目时使用。

    1.9K00

    Laravel5.7 Eloquent ORM快速入门详解

    ', 1)- max('price'); 插入/更新模型 插入 想要在数据库中插入新记录,只需创建一个新模型实例,设置模型属性,然后调用 save 方法: <?...请求中 name 参数值给 App\Flight 模型实例 name 属性,当我们调用 save 方法时,一条记录将会被插入数据库。...created_at updated_at 时间戳在 save 方法调用时会自动被设置,所以没必要手动设置它们。 更新 save 方法还可以用于更新数据库中已存在模型。...需要注意是,通过 firstOrNew 方法返回模型实例并没有持久化到数据库中,你还需要调用 save 方法手动持久化: // 通过属性获取航班, 如果不存在则创建...... firstOrCreate 方法一样,updateOrCreate 方法会持久化模型,所以无需调用 save(): // 如果有从奥克兰到圣地亚哥航班则将价格设置为 $99 // 如果没有匹配模型创建

    15.1K41

    Laravel5.1 框架关联模型之后操作实例分析

    分享给大家供大家参考,具体如下: 之前写过关于模型关联笔记,但是模型关联好后一些使用没有介绍,今天补上 1 写入关联模型 1.1 使用Save方法(一对多) 我们准备了两个模型:PostComment...方法(多对多) 准备一个Tag模型,它Post模型是多对多关系,别忘了生成中间表哦: public function getIndex() { // 创建文章 $post =...黑名单,它save唯一区别就是 只能传递数组、不能将一个模型实例传入。...而且使用时要用下方模型 调用associate方法,将下方模型更新到新上方模型。...而且使用时要用下方模型 调用dissociate方法,将下方模型从上方模型关联中移除。此外此方法执行后会将下方模型外键id至为0。

    1.9K20

    通过修改Laravel Auth使用saltpassword进行认证用户详解

    MYSQL建议使用5.7以上版本】/改用户登录 修改登录前我们需要先通过路由规则看一下登录请求具体控制器方法,在上文提到auth方法定义里可以看到 $this->get('login', 'AuthAuthController...用户点击邮件中链接在重置密码页面输入新密码,Laravel通过验证emailtoken确认用户就是发起重置密码请求用户后将新密码更新到用户在数据表记录里。...第一步需要配置Laravelemail功能,此外还需要在数据库中创建一个新表password_resets来存储用户email对应token CREATE TABLE password_resets...方法里,程序会先对用户提交数据做再一次认证,然后把密码用户实例传递给传递进来闭包,在闭包调用里完成了将新密码更新到用户表操作, 在闭包里程序调用PasswrodController类resetPassword...Laravel相关类子类重写方法来完成没有修改Laravel源码,这样既保持了良好可扩展性也保证了项目能够自由迁移。

    2.9K30

    Laravel Eloquent 模型关联关系(下)

    >orderBy('created_at', 'desc'); }]); 关联插入与更新 一对多关联记录插入 新增关联模型时候,可以在父模型调用相应方法直接插入记录到数据库,这样做好处是不需要指定关联模型与父模型外键关联字段值.../createMany 方法来插入关联数据,与 save/saveMany 方法不同是,这两个方法接收是数组参数: // 插入一条记录 $post->comments()->create([...如果是要更新新创建模型实例所属模型(父模型外键字段,比如以 posts 表为例,新增记录想要更新 user_id 字段,可以这么实现: $user = User::findOrFail(1);...对于那些已存在标签记录,我们可以通过更高效方法与文章进行关联关系绑定和解除,这个方法就是 sync,调用方法时只需传入刚创建/更新后文章标签对应 ID 值,至于哪些之前不存在关联需要绑定,哪些存在关联需要解除...(31); $comment->content = 'Laravel学院致力于提供优质Laravel中文学习资源'; $comment->save(); 再次查看评论模型及对应文章模型数据,可以看到文章模型更新事件评论模型更新时间已经一致了

    19.5K30

    推荐17-Laravel 中使用 JWT 认证 Restful API

    composer create-project --prefer-dist laravel/laravel jwt 这会在名为 jwt 目录下创建一个新 Laravel 项目。...在 login 方法中,我们得到了请求子集,其中只包含电子邮件密码。以输入值作为参数调用 JWTAuth::attempt() ,响应保存在一个变量中。...构建产品部分 要创建产品部分,我们需要 Product 模型,控制器迁移文件。运行以下命令来创建 Product 模型,控制器迁移文件。...Laravel 将自动将其转换为 JSON ,并创建一个为 200 成功响应码。 继续实现 show 方法。...然后,我们把请求中数据使用 fill 方法填充到产品详情。更新产品模型并保存到数据库,如果记录成功更新,返回一个 200 成功响应,否则返回 500 内部服务器错误响应给客户端。

    11K20

    30分钟用Laravel实现一个博客

    comments 评论表 为什么创建用户表呢?...注意此时我们其实没有模型 Blog 模型 Comment,我们只是创建了数据表而已。因此我们再创建两个模型。 php artisan make:model Blog, 关于评论表模型请自己写。...细心你可能发现了,我们数据表模型名字是有区别的:数据表为“小写复数形式”,而模型名为“大写单数形式”。创建模型都存在于 /app/ 下。...laravel提供全局函数,甚至引用一个类,调用静态方法或者实例化它。...现在请告诉,它是否配得上 “优雅” 两字?:) 希望大家可以喜欢、学习推广Laravel。如果您愿意付出比学习thinkphp5多0.01分努力,想这个框架是非常简单

    7.4K00

    通过 Laravel Eloquent 模型实现简单增删改查操作

    一个 Eloquent 模型类映射一张数据表,通过模型类提供方法,你可以获取其映射数据表所有记录,也可以获取单条记录,还可以创建、更新和删除对应数据表记录,而这一切都不需要你编写任何 SQL 语句...实际上,Eloquent 模型类底层查询也是基于查询构建器来实现,你可以在模型类上调用所有查询构建器 Where 查询方法,同样是以流接口模式构建方法调用即可。...执行上面的代码就会在数据库新增一条记录(我们在 Tinker 中执行上述代码): ? 我们先要创建一个新 Post 模型实例,然后依次设置需要设置字段,最后调用 save 方法保存即可。...此外,Eloquent 还为我们提供了一些快捷插入方法,比如 firstOrCreate firstOrNew,这两个方法都会先尝试通过指定查询条件在数据库中查找对应记录,如果没有找到的话,会创建对应模型实例...]); 删除数据 通过模型类删除对应数据表记录更新记录类似,都要先获取对应操作模型实例,删除对应记录更简单,获取到模型实例后,直接调用其删除方法即可: $post = Post::find(31);

    8K20

    Laravel系列4.3】模型Eloquent ORM使用(一)

    创建一个模型 创建模型我们可以手动,也可以通过命令行,既然是学习框架,那么我们还是通过命令行来创建一个模型类吧。使用表依然是之前表,不过还是改下名字吧,这回表名就叫做 m_test 。...对于 Laravel 中标准 Eloquent 模型类来说,每个表都应该有两个字段,一个是 updated_at ,另一个是 created_at ,分别是两个时间戳字段,用于记录数据创建时间修改时间...其实所有的表最好都有这两个字段,而且很多后台管理系统中还需要有 创建 修改人 记录。它们目的都是为了数据安全记录可追溯。...等等,不对呀,我们在模型里面定义是一个 gender() 方法,怎么在外面使用是一个属性?别急,我们再来看看源码,看看框架中是如何把调用属性变成调用一个方法。...这里也不多做讲解了,反正如果是在对象调用时候,调用是没有明确在类模板中写下属性,就会来到这个 __get() 魔术方法中。

    8.9K20

    Laravel学习记录--Model

    使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照另一个博客 - - - Laravel...在调用save方法向Phone模型插入值 这里Eloquent自动在phones表中添加了uid字段,并插入正确值 使用saveMany添加多个值 $user = \App\Muser::find...方法添加值 create方法save方法一样也是向模型插入值,不同save接收是一个完整Eloquent实例,而creare接收是一个纯数组,需要注意是使用create方法需要设置$fillable...,并且没有放在数组里id会被移除,如果是这样的话那1号学生选修课程1将被移除,同时会向中间表添加课程id=9记录 接下来看他执行过程是否与我们想一样 通过Laravel Debugbar...有时候你需要更新中间表中已经存在记录,使用updateExistingPivot方法方法接受中间记录另一个外键一个关联数组进行更新 public function show(){

    13.6K20

    Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法详解

    分享给大家供大家参考,具体如下: 好了,这篇文章我们主要掌握以下几个知识点 通过模型新增数据(涉及到自定义时间戳) 使用模型Create方法新增数据(涉及到批量赋值) NO.1通过模型新增数据 数据库上篇文章结尾数据库样式是一致...你会发现,这里新增数据有修改时间新增时间,那么如果你不想用,手动删除的话,则要去我们最先创造模型文件里去设置一个属性即可 如下: ? 然后你再新增,就不会出现了 ?...如果你想获取一个标准时间,只需要在模型文件下增加一个方法,然后在新增数据那输出即可,如下: ? 然后我们find10 ? ? 结果如下: ?...这里有个方法没有打上去,所以时间是1970年1月1日,具体什么操作步骤不详细讲述,可百度 NO.2模型Create新增 代码如下: namespace App\Http\Controllers;...([ ['name'= 'NanQiao','age'= 19] ]); dd($student); } } 然后他肯定是会报错为什么

    1.1K61

    Laravel 控制器:从 MVC 模式聊起

    关于视图模型我们后面会单独讲解。...4、依赖注入 正如前面介绍 Input 门面一样,Laravel门面为 Laravel 代码库中大部分类提供了简单接口调用,通过门面你可以轻松从当前获取各种请求数据,比如用户输入、Session...,主要目的在于简化代码调用,所以可以用门面调用方法肯定可以用依赖注入来实现,而可以通过依赖注入实现功能不一定可以通过门面来调用,除非你自定义实现这个门面。...,在代码运行时会根据配置从服务容器获取接口对应实现类执行具体接口方法,从而极大提高了代码可维护性可扩展性。...以上 PostController 控制器每个方法都有对应请求方式、路由命名、URL、方法业务逻辑约定。

    11.3K51

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

    [img] 所以,laravel模型提供了关联关系,本文就来梳理梳理那些用法。 代码时间 我们不要PPT似的念稿子,罗列出所有的关系模型,那样不直观也不是高效学习方式。...首先是数据库准备,假设有如下两个表字段对应关系: [pic] 使用命令行创建一个Profile模型,并同时创建迁移文件: php artisan make:model Profile --migration...还是老规矩,先实现数据库迁移使用 up 方法: public function up() { Schema::create('profiles', function(Blueprint $table...首先使用 User::find($id) 返回是一个 User 模型对象实例。 该实例有一个 profile 方法,就是上面这段关系声明。...($profile); 有了关联更新这种写操作,自然就有了关联删除,模型方法调用而已: $user = User::find($id); $user->profile()->delete(); 由于是严格一对一关系

    2K31

    跟我一起学Laravel-EloquentORM基础部分

    ,然后设置模型属性,最后调用save方法即可 $flight = new Flight; $flight->name = $request->name; $flight->save(); 在调用save...方法时候,会自动为created_atupdated_at字段设置时间戳,不需要手动指定 批量赋值插入 使用create方法可以执行批量为模型属性赋值插入操作,该方法将会返回新插入模型,在执行...create方法之前,需要先在模型中指定fillableguarded属性,用于防止不合法属性赋值(例如避免用户传入is_admin属性被误录入数据表)。...$flight = App\Flight::create(['name' => 'Flight 10']); 除了create方法,还有两外两个方法可以使用firstOrNewfirstOrCreate...fristOrNew与firstOrCreate类似,不同在于如果不存在,它会返回一个新模型对象,不过该模型是未经过持久化,需要手动调用save方法持久化到数据库。

    84420
    领券