【问题标题】:How does firstOrNew looks for records on the database?firstOrNew 如何在数据库中查找记录?
【发布时间】:2020-03-13 20:56:41
【问题描述】:

我的桌子上有一条现有记录:

company_id       first_name      last_name         age    
DCI-201812001      John             Doe            27

我想要的是,如果我插入新记录,我想通过检查 first_namelast_nameage 来检查记录是新记录还是要更新。

我在 Laravel 中使用了firstOrNew 方法,但是,当我尝试使用 ff.价值观:

first_name = "John"
last_name = "Doe"
age = 29

Laravel 的firstOrNew 认为和我上面所说的现有记录是一样的。

这是我的控制器:

截图

  1. 这是在我插入与现有记录有些相同的记录时检索到的内容。 first_name = "John"last_name = "Doe"age = 29。它检索了现有记录。为什么年龄列不同时会检索现有记录?为什么不考虑我的年龄?




请忽略问题2。我意识到如果记录不是 找到后,它会返回模型的一个新实例。

  1. 这是我插入一条完全不同的记录时检索到的内容。 first_name = "Felicita"last_name = "Ignacio"age = 25。为什么当我在表单的年龄列上传递值 25 时,年龄列变为空?

【问题讨论】:

  • 请不要将代码发布为截图。这意味着我们必须全部输入,而且无法搜索。
  • 下次我问问题时会注意这一点。无论如何,谢谢,你是一个很大的帮助。

标签: laravel laravel-6


【解决方案1】:

您的first_namelast_nameage 需要是这样的:

[
    'first_name' => ...,
    'last_name' => ...,
    'age' => ...,
]

不是这样的:

['first_name' => ...],
['last_name' => ...],
['age' => ...],

您将三个单独的数组作为三个单独的参数发送。您应该发送一个数组作为 first 参数。

firstOrNew 的第二个参数是一个附加的默认值数组,如果 orNew 部分执行。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2019-04-14
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    相关资源
    最近更新 更多