Изображение вмешательства Laravel 5 загружает несколько изменений размера и сохраняет путь к базе данных

я смог следовать этому ответу, и я действительно могу создать несколько размеров изображения.

Мой вопрос в том, как я могу сохранить каждый путь к базе данных.

public function store(Request $request)
{
    $input= $request->all();

    $file = $input['image'];

    $destinationPath='images/products';
    $destinationPathlarge='images/products/large';

    $extension = $file->getClientOriginalExtension();

    $fileName = rand(111,999).'.'.$extension;
    $image = $destinationPath . '/' .$fileName;

   $upload_success=  $file-> move($destinationPath,$fileName);
    $doc = new Products();
    $doc->name = $input['name'];
    $doc->price = $input['price'];
    $doc->description = $input['description'];
    $doc->s_description = $input['s_description'];
    $doc->brands_id = $input['brands_id'];
    $doc->categories_id = $input['categories_id'];
   $upload = Image::make($image)->resize(190,185)->save($destinationPath. '/' .$fileName)
        ->resize(100,100)->save($destinationPathlarge. '/'.$fileName);
    $doc->save();

person druphub    schedule 24.10.2015    source источник


Ответы (1)


Вы должны создать соответствующую модель Eloquent.

Сначала запустите команду artisan в папке вашего проекта.

php artisan make:model MyImage

Это создаст модель Eloquent MyImage и миграцию базы данных.

Отредактируйте только что созданный файл миграции, добавив новые поля пути в функцию up() следующим образом:

Schema::create('my_images', function(Blueprint $table)
{
    $table->increments('id');

    $table->string('path_190');
    $table->string('path_100');

    $table->timestamps();
});

Запустите новую миграцию, чтобы внести изменения в базу данных.

Затем в классе модели App\MyImage добавьте свойство fillable, чтобы включить заполнение полей пути:

class Image extends Model {

protected $fillable = [
    'path_100',
    'path_190',
];

}

Теперь добавьте в действие магазина вашего контроллера:

App\MyImage::create([
    'path_100' => asset($destinationPathlarge. '/'.$fileName100),
    'path_190' => asset($destinationPathlarge. '/'.$fileName190),
])->save();

Я надеюсь, что это помогает :)

person Michael Chekin    schedule 24.10.2015
comment
Я не думаю, что создание таблицы для разных размеров изображения - хороший способ. Правильное соглашение об именах намного лучше. - person Hkan; 24.10.2015
comment
Вы ошибаетесь. Я создал только одну таблицу my_images с двумя полями пути. - person Michael Chekin; 24.10.2015
comment
Нет, я понимаю. Я просто выбрал плохие слова. Использование базы данных для этой конкретной вещи является ненужным IMO. Публикую ответ через несколько минут. - person Hkan; 24.10.2015
comment
Возник вопрос: как я могу сохранить каждый путь к базе данных. И ДЕЙСТВИТЕЛЬНО имеет смысл хранить пути к загруженным изображениям и изображениям с измененным размером, чтобы извлекать их по запросу. НЕ имеет смысл обрезать изображение каждый раз, когда вы хотите его отобразить. - person Michael Chekin; 24.10.2015
comment
О, ты прав, я не заметил, что он явно хотел базу данных. Я прошу прощения за это. Кстати, коды в моем ответе не обрезаются при каждом запросе. Это довольно эффективно, чем использование базы данных, но единственная проблема заключается в отсутствии гибкости. В любом случае, поскольку это не то, что просил ОП, я удаляю свой ответ и голосую за вас. - person Hkan; 24.10.2015
comment
привет @MishaChekin, спасибо за ответ, это действительно помогло. Я бы хотел проголосовать, а также отметить это как ответ, но SO не дал мне на это разрешения. - person druphub; 26.10.2015
comment
@ user3185218 Это очень странно. Я почти уверен, что вы должны быть в состоянии принять ответ на свой вопрос. Может быть, вы ошибаетесь с голосованием. - person Michael Chekin; 29.10.2015