世界上第一个程序员:第一个或创建(laravel first or update)

我知道使用:

User::firstOrCreate(array('name' => $input['name'], 'email' => $input['email'], 'pword' => $input['pword']));

首先检查用户是否存在,如果不是创建它,但它如何检查?它是否检查提供的所有参数或是否有一种方法来指定特定的参数,例如,我可以检查电子邮件地址是否存在,而不是名称-因为两个用户可能具有相同的名称,但他们的电子邮件地址需要是唯一的。

166

firstOrCreate()finds匹配之前检查是否存在所有参数。如果不是所有参数都匹配,则将创建模型的新实例。

如果你只想检查一个特定的字段,那么使用firstOrCreate(['field_name' => 'value'])数组中只有一个项目。这将返回第一个匹配的项目,或者创建一个新的,如果没有找到匹配。

firstOrCreate()firstOrNew()之间的区别:

如果没有找到匹配项,firstOrCreate()将自动在数据库中创建一个新条目。否则,它将为您提供匹配项。

如果发现不匹配,firstOrNew()将为您提供一个新的模型实例,但只有在您显式执行此操作(在模型上调用save())时才会将其保存到数据库中。否则,它将为您提供匹配的项目。

在一个或另一个之间进行选择取决于您想要做什么。如果您想在第一次保存之前修改模型实例 (例如设置name或一些必填字段),您应该使用firstOrNew()。如果您可以只使用参数立即在数据库中创建一个新的模型实例而不修改它,您可以使用firstOrCreate()

92

从 Laravel 5.3 开始,可以通过firstOrCreate使用第二个可选的values参数一步完成此操作,该参数仅在创建新记录时使用,而不是用于初始搜索。doentation中解释如下:

firstOrCreate方法将尝试使用给定的列 / 值对查找数据库记录。如果在数据库中找不到模型,则将插入一条记录,其中包含将第一个数组参数与可选的第二个数组参数合并后产生的属性。

实例

$user = User::firstOrCreate([
    'email' => 'dummy@domain.example'
], [
    'firstName' => 'Taylor',
    'lastName' => 'Otwell'
]);

如果找到,则返回指定电子邮件的User,否则创建并返回一个包含emailfirstNamelastName组合数组的新用户。

此技术需要设置M Assignment,使用fillableguarded属性来指定哪些字段可以传递到create调用中。

对于这个例子,下面的工作(作为User类的属性):

/**
* The attributes that are m ignable.
*
* @var array
*/
protected $fillable = ['email', 'firstName', 'lastName'];
5

firstOrCreate()在找到匹配项之前检查是否存在所有参数。

如果你只想检查一个特定的字段,然后使用firstOrCreate(['field_name' => 'value'])像:

$user = User::firstOrCreate([
    'email' => 'abcd@gmail.com'
], [
    'firstName' => 'abcd',
    'lastName' => 'efgh',
    'veristyName'=>'xyz',
]);

然后它只检查电子邮件。

4

更新:

从 Laravel 5.3 开始,在单个步骤中执行此操作是可能的;firstOrCreate方法现在接受可选的第二个数组作为参数。

第一个数组参数是字段 / 值匹配的数组,第二个数组是在创建模型时使用的附加字段,如果通过匹配第一个数组中的字段 / 值没有找到匹配:

See the Laravel API doentation

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(378)
Startup.xls:从 xlsimportrange
上一篇
中通快递代码:快递中的路线优先级(priority express)
下一篇

相关推荐

  • 足浴收银软件:Laravel收银员订阅表

    关于足浴收银软件的问题,在cashier table中经常遇到,第一次使用 Laravel Cashier(版本 11 和 Laravel v6.x)。有两个表提供了 Cashier 标准迁移的一部分;subscriptions和subscription_items。…

    2024-06-17 01:09:34
    0 91 71
  • 农村宅基地区位补偿价实例:为Laravel配置宅基地

    关于农村宅基地区位补偿价实例的问题,在vi at homestead中经常遇到,我正在尝试为 Laravel 服务器配置 Homestead 环境,但无法使其正常工作。我按照文档安装和配置 Homestead 和 Vagrant。这是我的Homestead.yaml…

    2024-03-21 06:45:12
    0 96 70
  • Get Data:Arr::get()vsdata_get()在Laravel5.7中

    关于Get Data的问题,在laravel array helper中经常遇到,使用data_get()辅助函数,我们可以使用点.符号获得嵌套数组的值,如下所示:…

    2023-11-13 05:45:34
    0 80 67
  • 阿里香港服务器:Laravel在阿里巴巴无服务器环境下的性能调优

    关于阿里香港服务器的问题,在alibaba serverless中经常遇到,我在阿里云中有无服务器服务器,至少有 30 个副本(每个 4C8G)。…

    2024-03-23 08:34:57
    0 92 45
  • Bon护照是什么:Laravel-安装Laravel护照后的.rnd文件是什么

    关于Bon护照是什么的问题,在rnd file中经常遇到,在 root 安装 Laravel Passport 后出现的.rnd 文件是什么?它是否包含任何敏感数据?我们应该将其提交到 repo?…

    2024-09-11 08:07:00
    0 84 49
  • 集团代码在哪里查询:Laravel雄辩或在哪里查询

    关于集团代码在哪里查询的问题,在laravel eloquent orwhere中经常遇到,有人可以告诉我如何在雄辩写这个查询?…

    2024-08-16 02:29:31
    0 14 60
  • 用户注册页面html代码:Laravel注册页面 eero

    关于用户注册页面html代码的问题,在check eeros message中经常遇到,请我有一个工作正常的 laravel 网站,然后突然之间,当用户使用引用链接注册时,该页面将重新加载并重定向回注册页面。我尝试了几次,它的工作原理,然后我使用新的引用链接注册另一个新帐户,从那以后再也没有工作。它没有显示任何错误消息,而是反弹回同一个页面。我已经检查了 RegistrationController,所有的代码仍然很好。…

    2024-09-06 13:38:41
    0 39 48
  • 课程代码在哪里查询:Laravel雄辩或在哪里查询

    关于课程代码在哪里查询的问题,在laravel eloquent orwhere中经常遇到,有人可以告诉我如何在雄辩写这个查询?…

    2024-08-06 05:48:42
    0 75 54

发表评论

登录 后才能评论

评论列表(73条)