Вызов функции-члена storeAs () в null - PullRequest
0 голосов
/ 15 октября 2019

Я хочу сохранить изображения с идентификатором в таблицу и сохранить их в папке.

У меня есть две таблицы каталоги и изображения .Images таблица имеет img_id который является внешним ключом для id в таблице каталогов, код в моем контроллере:

$catalog = new Katalog();
$catalog->name = $name;
$catalog->picturePath = $name . '/';
$catalog->description = $desc;
$catalog->address = $request->input('address');
$catalog->phone_number = $request->input('phone_number');
$catalog->email = $request->input('e_mail');
$catalog->info_holder = $request->input('type');
$catalog->partner_logo = $logo_img_name;
$catalog->short_news = $request->input('short_news');
$catalog->updated_at = Carbon::now();
$catalog->site = $request->input('site');
$catalog->creator_id = Auth::user()->id;
$catalog->save();

$id = Katalog::where('name', $name)->first()->id;

if ($request->hasFile('images')) {
    foreach ($request->file('images') as $image) {
        $img_name = $image->getClientOriginalName();
        $request->image->storeAs(('/images/' . $name), $img_name, 'images');
        Image::creat([
            'img_id' => $id,
            'img_name' => $img_name
        ]);
    }
}

После сохранения данных в таблице каталогов он возвращает новый id, но я хочу сохранить изображения вimages таблица с возвратом id, но не может этого сделать. Ошибка отображается здесь $request->image->storeAs(('/images/' . $name), $img_name, 'images');

Помогите, пожалуйста, спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Теперь это работает так:

$files = $request->file('images');

if($request->hasFile('images'))
{
    foreach ($files as $file) {
           $request->image->storeAs(('/images/' . $name), $img_name, 'images');
    }
}

Мне пришлось добавить [] после значения атрибута имени, поэтому:

<input type="file" name="images[]" multiple>
0 голосов
/ 15 октября 2019

Вы можете получить идентификатор только что созданного объекта (Katalog) без запроса

$id = $catalog->id;

вместо

$id = Katalog::where('name', $name)->first()->id;

Потому что, если есть другие записи Katalog с тем же именем, вы можете не получить тот, который вам нужен

PS: у вас может быть здесь опечатка, добавьте "e" в конце

Image::create([
  'img_id' => $id,
  'img_name' => $img_name
]);

Надеюсь, это поможет

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