【问题标题】:Laravel: how to query a table, take the first value of from a column for each unique item_id and assign it to another table columnLaravel:如何查询表,从每个唯一 item_id 的列中获取第一个值并将其分配给另一个表列
【发布时间】:2022-01-26 12:44:56
【问题描述】:

我对 Laravel 和迁移完全陌生。

我有 2 个表格:claim_itemsclaims

claim_items 表有 2 列:

  1. claim_id 并指表声明的 id(1 个声明可能有 1 个或多个声明项,而 1 个或多个声明项只有 1 个声明)
  2. claim_type

claims 表有很多列,其中:

  1. id(当然)
  2. claim_items_type

我需要编写一个将查询 claim_items 表的迁移,并且对于每个 claim_id(对于每个声明),它采用 claim_type 的第一个值并将该值分配给表声明中的列 claim_items_type (这样每个声明都有一个列 claim_items_type 与从 claim_items 表中找到的第一个值相对于对应的 claim_id)。

我尝试了很多变化,但最终我把一切都搞砸了,比以前更困惑了。

知道如何实现这一目标吗?

【问题讨论】:

  • 嗨,您对 SO 并不陌生。所以你应该已经知道我们想要查看你尝试过的代码。但是没问题。您正在尝试的并不是 imho 的真正迁移。迁移应该创建/修改结构,而不是查询/种子表。这看起来更像是播种机,甚至是自定义命令。
  • 没错,就像@GertB。说,这看起来像一个自定义命令,你应该把它放在你的控制器下。迁移文件将仅包含 laravel 语言中的 create table 和 drop table 命令,仅对创建数据库表结构有用。里面绝对没有数据。

标签: php sql laravel migration


【解决方案1】:

正如 Gert B 所解释的,这看起来像是一个自定义命令,您应该将它放在您的控制器之下。迁移文件将仅包含 laravel 语言中的 create table 和 drop table 命令,仅对创建数据库表结构有用。里面绝对没有数据。此外,如果您想使用自定义数据插入/更新数据库,您应该选择播种器(它会更新数据库中的测试数据之类的东西),或者您应该编写自定义控制器来为您完成这项工作。

建议是

  • 使用直接 SQL 插入或迁移文件更新您的 claim_items。
  • 编写自定义控制器和用户 first() 以获取结果的第一次出现。
$conditions['column_name'] = 'Your required value';
$answer = DB::table('claim-item')->where($conditions)->first();

您可以在循环下使用它来更接近您的要求。

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多