Как отобразить несколько изображений, которые хранятся в виде массива в laravel? - PullRequest
0 голосов
/ 25 октября 2018

, пожалуйста, помогите мне отобразить изображение, которое хранится в виде массива в базе данных мой контроллер: (имя файла - это имя столбца моего изображения в базе данных)

хранилище открытых функций (запрос $ запрос) {

$this->validate($request, [

        'filename' => 'required',
        'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'

]);

// Start multiple image upload code 
if($request->hasfile('filename'))
 {

    foreach($request->file('filename') as $image)
    {
        $name=$image->getClientOriginalName();
        $image->move(public_path().'/images/', $name);  
        $data[] = $name;  
    }
 }
// End multiple image upload code


$houses= new House();
$houses->division = $request->input('division');
$houses->city = $request->input('city');
$houses->area = $request->input('area');
$houses->owner_name = $request->input('owner_name');
$houses->house_name = $request->input('house_name');
$houses->type = $request->input('type');
$houses->from = $request->input('from');
$houses->rent = $request->input('rent');
$houses->phone = $request->input('phone');
$houses->address = $request->input('address');
$houses->description = $request->input('description');

$houses->filename=json_encode($data); **// This for  image upload**

$houses->save();

return back()->with('success', 'Your House has been successfully');

}

столбец изображения

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Первый массив приведёт столбец filename в вашей модели.Для получения дополнительной информации: Array & JSON Casting

protected $casts = [
    'filename' => 'array',
];

После этого, всякий раз, когда вы выбираете имя файла из модели House, laravel автоматически преобразует данные json в массив.Прокрутите массив и отобразите изображения.

$house = House::find(1);
foreach($house->filename as $filename) {
    echo public_path().'/images/', $filename;
}
0 голосов
/ 25 октября 2018

Если вы хотите получить, то отобразите изображения, хранящиеся в виде массива, и я рекомендую приведение атрибута имени файла к json / array в модели.

Вы можете сделать это в модели вашего дома следующим образом.:

class House extends Model
{
    protected $casts = [
        'filename' => 'array',
    ];
}

Чтобы отобразить его в виде, вы можете пройти через отлитый массив:

@foreach($house->filename as $image)
    <img src="{{ url('link/to/assets/') . $image }}"
@endforeach

. Подробнее в документах о приведении здесь:

https://laravel.com/docs/5.7/eloquent-mutators#array-and-json-casting

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

Laravel обрабатывает все это для вас в методе store(), показанном здесь: https://laravel.com/docs/5.7/requests#storing-uploaded-files. При желании вы можете создать свои собственные имена, используя storeAs().

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