Проблема Laravel при передаче данных изображения - PullRequest
1 голос
/ 25 октября 2019

Я пытаюсь загрузить изображение для значка в моем проекте. Когда POST эту функцию я получаю и появляется сообщение об ошибке

Созданный Laravel не имеет значения по умолчанию

, когда я уже добавляю поле create_by в свой список данных, нижемой код:

public function postAddProject($dev_id)
    {
        $data = request()->validate([
            'name' => 'required',
            'address' => 'required|max:100',
            'address2' => 'required_with:address3|max:100',
            'address3' => 'nullable|max:100',
            'zipcode' => 'required|numeric|digits:5',
            'attachment' => 'mimes:jpeg,png'
        ]);

        $data['developer_id'] = $dev_id;
        $data['status'] = 'active';
        $data['created_by'] = auth()->user()->id;

        $project = Project::create($data);

        if (!empty($data['attachment'])) {
            $attachment_file = $data['attachment'];
            $logo_file_contents = file_get_contents($attachment_file);
            $imageData = [
                'data' => $logo_file_contents,
                'mime_type' => $attachment_file->getClientMimeType(),
                'size' => mb_strlen($logo_file_contents),
                'extension' => $attachment_file->getClientOriginalExtension()
            ];

            // $imageData = self::optimizeImage($imageData);

            $imageMedia = Media::create([
                'category' => 'project-icon',
                'mimetype' => $imageData['mime_type'],
                'data' => $imageData['data'],
                'size' => $imageData['size'],
                'created_by' => auth()->user()->id,
                'filename' => 'project_' . date('Y-m-d_H:i:s') . "." . $imageData['extension']
            ]);

            $project->logo_media()->associate($imageMedia);
            $project->save();
        }

        $dev_id = $project->developer_id;

        return redirect()->route('admin.developers.projects.index', ['dev_id' => $dev_id])->withStatus(__('Admin successfully created.'));
    }

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Попробуйте добавить такой код в начале скрипта.

$user = auth()->user();
if(is_null($user)){
    throw new \Exception('Error auth user');
}

$data['created_by'] = $user->id;
1 голос
/ 25 октября 2019

Created_by - это поле таблицы, которое используется для указания времени создания данных. Вы не должны перезаписывать это.

Это поле будет автоматически заполнено на mysql и laravel. Вы должны добавить свой user_id в любое другое поле, например user_id. Просто удалите следующую строку.

$data['created_by'] = auth()->user()->id;

И создайте новое поле в таблице для user_id и добавьте auth()->user()->id в это поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...