【问题标题】:Laravel copy data to other table, check if existLaravel 复制数据到其他表,检查是否存在
【发布时间】:2019-01-18 18:49:25
【问题描述】:

我想复制很多行到另一个表

临时数据

| id | name |  email     | id_transaction | order_number |
|----|------|------------|----------------|--------------|
| 1  | Gery | a@mail.com | A1             | 1            |
| 2  | Ray  | b@mail.com | A1             | 2            |

我想将这些行复制到表 MAIN DATA

| id | name | email | id_transaction | order_number |

我想检查 id_transactionorder_number 是否存在,该行不会复制到 MAIN DATA。

这是我迄今为止尝试过的,但它只是从id _transaction复制第一行

| 1 | Gery | a@mail.com | A1 | 1 |

 

$copy = TEMPORARYDATA::where('id_transaction', '=', $id_trans )->get()->toArray();
foreach ($copy as $copy) 
{
    $count = MAINDATA::where('id_transaction', $id_trans)->groupby('order_num')->count('order_num');
    if ($count > 0)
    {}
    else
    {
        $save_copy = array_except($copy, ['created_at', 'updated_at','id']);
        MAINDATA::insert($save_copy);
    }
}

【问题讨论】:

    标签: php laravel controller copy file-exists


    【解决方案1】:

    尝试删除您要复制的记录的id(如果您不关心)或更改它。我还建议您返回 $copy 的值以了解该变量是如何填充的,如果未按预期填充,请使用 toSql() 输出您正在执行的查询。

    不管怎样,你应该算MAINDATA记录,外部for循环,因为你重复同一个查询很多次,那是没用的,而且浪费你的机器资源。

    您提供的代码应该是:

    $copy = TEMPORARYDATA::select('name', 'email', 'id_transaction', 'order_number')
                         ->where('id_transaction', '=', $id_trans )
                         ->get()
                         ->toArray();
    
    $count = MAINDATA::where('id_transaction', $id_trans)
                     ->groupby('order_num')
                     ->count();
    
    foreach ($c as $copy) 
    {
        if ($count > 0)
            ;
        else
            MAINDATA::insert($c);
    }
    

    注意:确保您尝试在表格中插入的属性位于模型中的 protected $fillable 数组中。阅读更多关于它的信息here

    【讨论】:

      【解决方案2】:

      尝试使用此代码将 TEMPORARY DATA 表传输到 MAIN DATA 表,并且您的条件也满足。 $temporary_Data = [];

      `$temporary_Data = TEMPORARYDATA::where('id_transaction', '=', $id_trans )->get()

      foreach($temporary_Data as $data) { $mainObj =['name' => $temporary_Data->name, 'email' => $temporary_Data->email, 'id_transaction'=> $temporary_Data->id_transaction, 'order_number'=> $temporary_Data->order_number,] MAINDATA::create($data); }`

      【讨论】:

        猜你喜欢
        • 2017-10-28
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 2016-06-12
        • 2013-05-11
        • 1970-01-01
        相关资源
        最近更新 更多