Проверить массив, если он уже существует в mysql php laravel - PullRequest
0 голосов
/ 09 января 2020

В настоящее время у меня есть набор массивов.

и

Я могу легко вставить эти данные в свою базу данных, используя Laravel без каких-либо проверок

вот образец массива

КОД:

        $excel1 = Importer::make('Excel');
        $excel1->hasHeader(true);
        $excel1->load($savePath.$fileName);
        $excel1->setSheet(2);
        $collection1 = $excel1->getCollection();
        $arr1 = json_decode($collection1,true);

    foreach ($arr1 as $row1) {
                $insert_data1[] = array(
                    'projCode'  =>  $projCode,
                    'emp_id'  =>  $row1['company_id'],
                    'type'  =>  'EMP',
                    'deleted'  =>  0,
                    'by_id'  => auth()->user()->id,
                    'updated_by'    =>  auth()->user()->name,
                    'created_at'    =>  now(),
                    'updated_at'    => now(),
                );
            }
  dd($insert_data1);

ВЫХОД:

enter image description here

, и я использую этот код для вставки этих данные в мою таблицу

    DB::table('tbl_emp_proj')->insert($insert_data1);

, и это прекрасно работает, но проблема в том,

Я пытаюсь проверить, существует ли emp_id в моей таблице users

Вот моя users таблица

enter image description here

Значение emp_id из массива должно проверить, существует ли оно уже в моем users, используя company_id поле от users. Как я могу проверить это, если $insert_data1 является массивом и должен проверить, существует ли он в базе данных?

ОБНОВЛЕНИЕ

в настоящее время у меня есть этот валидатор, и я пытался сложите $Insert_data1, но получите undefined var for $insert_data1.

      $validator = Validator::make(
        [
            'file'      => $request->file,
            'extension' => strtolower($request->file->getClientOriginalExtension()),
        ],
        [
            'file'          => 'required|max:5000',
            'extension'      => 'required|in:,csv,xlsx,xls',
        ],
        $insert_data1,
        [
            '*.emp_id' => "required|exists:users,company_id",
        ]
    );

1 Ответ

1 голос
/ 09 января 2020

Вы можете использовать Laravel Validator для проверки любых массивов, как если бы это был ввод запроса.

use Illuminate\Support\Facades\Validator;

$validator = Validator::make(
    $insert_data1,
    [
        '*.emp_id' => "required|integer|exists:users,company_id",
    ]
);

РЕДАКТИРОВАТЬ:

Вы можете получать сообщения об ошибках и элементы ошибок с помощью API валидатора.

$failed = $validator->fails(); //boolean

$errors = $validator->errors();

$validated = $validator->validated();

$invalid = $validator->invalid();
...