Laravel 설득력 있는 다중 종속 모델

Laravel 설득력 있는 다중 종속 모델



Null 값의 유효성 검사로 CSV 가져오기를 구현하는 방법은 무엇입니까?


Lets Start

CSV란 무엇입니까?



CSV 또는 쉼표로 구분된 값은 쉼표를 사용하여 값을 구분하지만 때로는 세미콜론과 같은 다른 문자를 사용하여 구분된 텍스트 파일입니다. 각 레코드는 쉼표로 구분된 하나 이상의 필드로 구성됩니다. 구분 기호(필드)로 쉼표를 사용하는 것이 이 파일 형식의 이름 소스입니다. CSV 파일은 일반적으로 표 형식 데이터(숫자 및 텍스트)를 일반 텍스트로 저장하며, 이 경우 각 행에는 동일한 수의 필드가 있습니다.

Laravel 9에서 CSV를 가져오는 방법은 무엇입니까?



laravel 9에서는 CSV 형식의 파일에서 데이터베이스로 데이터를 가져오거나 CSV 형식으로 데이터를 내보내는 기능을 만들기 위해 laravel-excel 패키지를 사용할 수 있습니다. 구현 방법은 아래에서 설명합니다.

Import in Laravel 9



CSV 가져오기



    Step 1: Install Laravel
    Step 2: Setup Database
    Step 3: Create Models

CSV 가져오기



자, 우리가 만든 첫 번째 기능은 CSV 형식 파일에서 데이터베이스의 사용자 테이블로 데이터를 가져오는 기능입니다.

CSV에서 어레이 특성으로



Create Traits folder inside the App directory



namespace App\Traits;
trait CsvToArray
{
    /**
     * Converts the  CSV DATA to an Array with uploaded files
     *
     * @param string $filename
     * @param string $delimiter
     * @return array
     */
    public function csvToArray(string $filename = '', string $delimiter = ',')
    {
        if (!file_exists($filename) || !is_readable($filename)) {
            return false;
        }
        $header = null;
        $data = [];
        if (($handle = fopen($filename, 'r')) !== false) {
            while (($row = fgetcsv(
                $handle,
                1000,
                $delimiter
            )) !== false) {
                if (!$header)
                    $header = $row;
                else
                    $data[] = array_combine($header, $row);
            }
            fclose($handle);
        }
        return $data;
    }
}




다중 종속 모델



부모 테이블의 기본 키와 자식 테이블의 외래 키를 따라 배포되는 다른 데이터에 종속됩니다.

 public function importEmployee(Request $request)
    {
        $request->validate(
            [
                'file' => ['required', 'mimes:csv,txt'],
            ]
        );
        $fileName = time() . '.' . $request->file->getClientOriginalExtension();
        $request->file->move(public_path('uploads'), $fileName);
        $csvFile   = public_path('uploads/' . $fileName);
        $employees = $this->csvToArray($csvFile);
        $user = User::find(Auth::user()->id);




In File upload input make field as accept = csv only.

Here, Dependent model Employee has the data from user to create the new employees.


foreach ($employees as $employee) {
            $user->employee()->create([
                'username'    =>  ' ' ? $employee['email'] : $employee['username'],
                'employeeId'  => $employee['employeeId'],
                'first_name'  => $employee['first_name'],
                'last_name'   => $employee['last_name'],
                'email'       => $employee['email'],
                'department'  => $employee['department'],
                'designation' => $employee['designation'],
                'password'    =>  ' ' ? Hash::make($employee['email']) : Hash::make($employee['password']),
            ]);
        }
        return redirect('employee.details')
            ->with('success', 'Employee updated Successfully');
    }




$user = User::find(Auth::user()->id);

$user->employee()->create



이해해야 할 가장 중요한 두 줄 위.



직원 모델 파일 Employee.php에서




public function user()
    {
        return $this->belongsTo(
            User::class,
            'user_id',
            'id'
        );
    }




사용자 모델 파일 User.php에서




public function employee(){
        return $this->hasMany(Employee::class);
    }




경로 파일 web.php



Route::post('importEmployee', [App\Http\Controllers\EmployeeImportController::class, 'importEmployee']);



결론



이 기사에서는 laravel 9의 CSV 형식으로 Eloquent ORM에서 여러 모델과 관련된 가져오기 데이터를 만드는 방법을 배웠습니다.

좋은 웹페이지 즐겨찾기