答案 1
以下是原始接受的答案:Laravel-4
已经有一个可用的方法,当使用此方法时,它会抛出失败,但在您的情况下,您可以通过在模型中创建方法来执行此操作,例如,如果您有一个模型,那么您只需将此函数放在模型中即可findOrFail
Laravel
ModelNotFoundException
User
// Put this in any model and use
// Modelname::findOrCreate($id);
public static function findOrCreate($id)
{
$obj = static::find($id);
return $obj ?: new static;
}
在控制器中,您可以使用
$user = User::findOrCreate(5);
$user->first_name = 'John';
$user->last_name = 'Doe';
$user->save();
如果存在 具有 的用户,则将对其进行更新,否则将创建一个新用户,但将(自动递增)。id
5
id
last_user_id + 1
这是执行相同操作的另一种方法:
public function scopeFindOrCreate($query, $id)
{
$obj = $query->find($id);
return $obj ?: new static;
}
例如,您可以在模型中使用 a,而不是创建静态方法,因此 will 和 调用 中的方法相同,例如scope
Model
scopeMethodName
Model::methodName()
$user = User::findOrCreate(5);
更新:
在 中可用,答案太旧了,它是在 中给出的。firstOrCreate
Laravel 5x
Laravel-4.0
2013
在 Laravel 5.3 中,该方法具有以下声明:firstOrCreate
public function firstOrCreate(array $attributes, array $values = [])
这意味着您可以像这样使用它:
User::firstOrCreate(['email' => $email], ['name' => $name]);
用户的存在将仅通过电子邮件进行检查,但在创建时,新记录将保存电子邮件和名称。
答案 2
或者,在这种情况下,您还可以使用Laravel函数并搜索id作为属性,即
$user = User::firstOrCreate(['id' => $id]);
推荐
-
相当于Java中PHP的crypt函数 我正在将我的PHP代码迁移到Google App Engine - Java。因此,我需要一个相当于Java中PHP的crypt函数,因为我已将使用crypt的注册用户的所有密码存储在我的数据库中。 编辑1:这是我用于加密密码的php
-
需要有关如何从接受语言请求标头获取首选语言的示例 我需要一个代码示例或库来解析标头并返回我的首选语言。 指出: “接受语言请求标头”字段类似于“接受”,但限制首选作为请求响应的自然语言集。语言标记在第 3.10 节中定义。
-
无法在 Java 和 PHP 之间交换使用 AES-256 加密的数据 我的问题是:我在Java中加密的东西,我可以在Java中完全解密,但PHP不能解密。我用加密的内容可以使用 解密,但不能在 Java 中解密。 我想从Java应用程序发送和接收加密数据到PHP页面,所以我
-
-
Quercus是Java环境中PHP的可行替代品吗? 对于任何偶然发现这个问题的人,他们不知道是什么 - 它是用Java完成的PHP的实现。 对于我目前正在从事的项目,我们通过cgi在servlet上提供php页面(我知道它很笨拙,但这是支持遗留代码的要求
标签