如何从PHP中的一个数组中将2个记录添加到数据库中?

发布于 2025-02-08 09:02:36 字数 1158 浏览 2 评论 0原文

我将Laravel 8与Excel软件包一起使用。我有一个来自CSV导入的数组:

array(“先生”,“汤姆”,“员工”,“”,“先生”,“约翰”,“ doe”)

在我的模型函数下面,我正在努力添加2个单独的2个单独添加2个单独 这两个记录没有复制代码。 在上面的代码中,我要做的就是将CSV数据分类到其正确字段中的标题,firstName等。它们都将其整理成一个名为 name 的数组,该数组 bocke 房主 so:

  • title = mr

  • firstName = tom

  • lastname = staff

  • title2 = mr

  • firstName2 = john

  • lastName2 = doe

     公共功能模型(数组$行)
     {
         if(count($ row)== 3){
             $ houseer = new trixname($ row);
         } elseif(count($ row)== 7){
             $ househer = new SevenNateName($ row);
         }
    
         $ SORTER =新CSVNamesorter;
         $ Sorter-> sort($房主);
    
         返回新temp_csv_data([[
             'title'=> $房主 - > name ['title'],
             'firstName'=> $房主 - > name ['firstName'],
             'lastname'=> $房主 - > name ['lastname'],
             'title'=> $房主 - > name ['title2'],
             'firstName'=> $房主 - > name ['firstName2'],
             'lastname'=> $房主 - > name ['lastName2'],
         );
     }
     

I'm using Laravel 8 with the Excel package. I have an array from a csv import as:

array("Mr", "Tom", "Staff", "and", "Mr", "John", "Doe")

In my model function below, I am struggling to add 2 separate records for these two without duplicating code.
In the code above, all I do is sort the csv data into their correct fields as title, firstName etc. It's all sorted into an array called name which is inside the object homeowner So:

  • title = Mr

  • firstName = Tom

  • lastName = Staff

  • title2 = Mr

  • firstName2 = John

  • lastName2 = Doe

     public function model(array $row)
     {
         if (count($row) == 3) {
             $homeowner = new ThreeWordName($row);
         }elseif (count($row) == 7) {
             $homeowner = new SevenWordName($row);
         }
    
         $sorter = new CsvNameSorter;
         $sorter->sort($homeowner);
    
         return new temp_csv_data([
             'title'         => $homeowner->name['title'],
             'firstName'     => $homeowner->name['firstName'],
             'lastName'      => $homeowner->name['lastName'],
             'title'         => $homeowner->name['title2'],
             'firstName'     => $homeowner->name['firstName2'],
             'lastName'      => $homeowner->name['lastName2'],
         ]);
     }
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

走走停停 2025-02-15 09:02:36

作为在laravel excel中导入的模型,如果您使用导入到建模,则将一行映射到模型。

相反,您可以导入集合并创建逻辑。

public function collection(Collection $rows)
{
    foreach($rows as $row) {
        if (count($row) == 3) {
            $homeowner = new ThreeWordName($row);
        }elseif (count($row) == 7) {
            $homeowner = new SevenWordName($row);
        }

        $sorter = new CsvNameSorter;
        $sorter->sort($homeowner);

        TempCsvData::create([
            'title' => $homeowner->name['title'],
            'firstName' => $homeowner->name['firstName'],
            'lastName' => $homeowner->name['lastName'],
        ]);

        TempCsvData::create([
            'title' => $homeowner->name['title2'],
            'firstName' => $homeowner->name['firstName2'],
            'lastName' => $homeowner->name['lastName2'],
        ]);
    }
}

值得注意的是,班级命名为帕斯卡(Pascal)。

As importing to model in Laravel Excel, is about mapping one row to a model, if you use importing to model.

Instead you could import to a collection and create your logic.

public function collection(Collection $rows)
{
    foreach($rows as $row) {
        if (count($row) == 3) {
            $homeowner = new ThreeWordName($row);
        }elseif (count($row) == 7) {
            $homeowner = new SevenWordName($row);
        }

        $sorter = new CsvNameSorter;
        $sorter->sort($homeowner);

        TempCsvData::create([
            'title' => $homeowner->name['title'],
            'firstName' => $homeowner->name['firstName'],
            'lastName' => $homeowner->name['lastName'],
        ]);

        TempCsvData::create([
            'title' => $homeowner->name['title2'],
            'firstName' => $homeowner->name['firstName2'],
            'lastName' => $homeowner->name['lastName2'],
        ]);
    }
}

As a note, class naming is pascal cased.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文