pan*_*hro 58 laravel eloquent laravel-4
我知道使用:
User::firstOrCreate(array('name' => $input['name'], 'email' => $input['email'], 'password' => $input['password']));
Run Code Online (Sandbox Code Playgroud)
检查用户是否先存在,如果不存在则创建它,但是如何检查?它是否检查所提供的所有参数或是否有指定特定参数的方法,例如,我可以检查电子邮件地址是否存在,而不是名称 - 因为两个用户可能具有相同的名称,但他们的电子邮件地址需要是独特.
low*_*nds 116
firstOrCreate()
检查在finds
匹配之前存在的所有参数.如果并非所有参数都匹配,则将创建模型的新实例.
如果您只想检查特定字段,firstOrCreate(['field_name' => 'value'])
则只使用数组中的一个项目.这将返回匹配的第一个项目,如果找不到匹配项,则创建一个新项目.
firstOrCreate()
和之间的区别firstOrNew()
:
firstOrCreate()
如果找不到匹配项,将自动在数据库中创建新条目.否则它会给你匹配的项目.firstOrNew()
如果找不到匹配项,将为您提供一个新的模型实例,但只有在您明确这样做时才会保存到数据库中(调用save()
模型).否则它会给你匹配的项目.在一个或另一个之间进行选择取决于您想要做什么.如果要在第一次保存之前修改模型实例(例如,设置name
或某些必填字段),则应使用firstOrNew()
.如果您可以使用参数立即在数据库中创建新模型实例而不进行修改,则可以使用firstOrCreate()
.
umb*_*rel 52
以前的答案已经过时了.自从Laravel 5.3以来,firstOrCreate
现在有了第二个参数values
,可以实现一步,它可用于新记录,但不能用于搜索
$user = User::firstOrCreate([
'email' => 'dummy@domain.com'
], [
'firstName' => 'Taylor',
'lastName' => 'Otwell'
]);
Run Code Online (Sandbox Code Playgroud)
firstOrCreate()
在找到匹配之前检查所有参数是否存在。
如果您只想检查特定字段,请使用firstOrCreate(['field_name' => 'value'])
:
$user = User::firstOrCreate([
'email' => 'abcd@gmail.com'
], [
'firstName' => 'abcd',
'lastName' => 'efgh',
'veristyName'=>'xyz',
]);
Run Code Online (Sandbox Code Playgroud)
然后它只检查电子邮件。
归档时间: |
|
查看次数: |
76149 次 |
最近记录: |