'How to find data in other row with laravel-excel

I'm using maatwebsite/excel to import an excel file with laravel and save data to database In my excel file I have a column name "Ref" and an other name "toRef" In my database I have a field "toRef_id" When I import a file I want to save in toRef_id, the id create where the row with Ref was equal to toRef For example

First row : Ref = First, Name = My first data, toRef = null
Second row : Ref = Second, Name = second data, toRef = null
Third row : Ref = Third, Name = My third data, toRef = First

So I want to import the first row to database with toRef_id = null. For example the id created is 1 And when I import the second row I want to save in database the toRef_id = 1

There is my controller :

function import(){
       (new CustomImport)->import('myfile')
}

and CustomImport

class CustomImport implements ToModel, WithHeadingRow{
  use Importable;
  public function model(array $row){
   Data::create([
    'name' => $row['name'],
   ])
  }
}

But I don't know how to get the id of a previous created row where $previousrow['ref'] = $row['toRef']

Could you help me please ?



Solution 1:[1]

class CustomImport implements ToModel, WithHeadingRow{
  use Importable;
  public $lastRow;

  public function model(array $row){
    $this->lastRow = Data::create([
     'name' => $row['name'],
      'previousRowId' => isset($this->lastRow->id) : $this->lastRow->id ? null

    ]);
    
  }
} 

Store previous created record in varibale and access it.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Anuj Kumar