Многократный поиск изображений с помощью Laravel - PullRequest
0 голосов
/ 25 сентября 2019

Я уже загрузил несколько изображений в базу данных.Теперь я пытаюсь отобразить их в моем представлении.при использовании foreach для циклического перемещения по изображениям я получаю сообщение об ошибке - указан неверный аргумент для foreach ()

Это мой блейд

 @foreach($coverage as $cove)
            <tr>
                <td>{{$loop->iteration}}</td>
                <td>{{$cove->news1}}</td>
                <td>{{$cove->news2}}</td>
                <td>{{$cove->announcement1}}</td>
                <td>{{$cove->announcement2}}</td>
                <td>
                    @foreach($cove->gallery as $image)
                            <img src="{{'image/'.$image}}" style="height:200px;width:200px;"></td>
                    @endforeach
                <td>
                    <a href="{{route('edit',$cove->id)}}" class="btn btn-primary" style="display: inline-block">Edit</a>
                    <a onclick="alert('Do you want to delete')" href="{{route('delete',$cove->id)}}" class="btn btn-danger" style="display:inline-block">Delete</a>
                </td>
            </tr>
        @endforeach
        </tbody>

Это мой магазин контроллера

public function store(Request $request)
{

    $coverage = new coverage();
    $coverage->news1 = $request->news1;
    $coverage->news2 = $request->news2;
    $coverage->announcement1 = $request->announcement1;
    $coverage->announcement2 = $request->announcement2;
    $input = $request->all();
    $gallery = array();
    if ($files = $request->file('gallery')) {
        foreach ($files as $file) {
            $name = $file->getClientOriginalName();
            $file->move('image', $name);
            $gallery[] = $name;
        }
    }
    $coverage->gallery = json_encode($gallery);
    $coveragesave = $coverage->save();
    if ($coveragesave) {
        return redirect()->back()->with("success", "The record has been stored");
    } else {
        return redirect()->back()->with("error", "There is an error");
    }
}

Это, как я определил охват таблицы

 public function up()
{
    Schema::create('coverages', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('news1');
        $table->string('news2');
        $table->string('announcement1');
        $table->string('announcement2');
        $table->binary('gallery')->nullable();
        $table->timestamps();
    });
}

на демпинг $ Охват-> галерея в магазине контроллер я получаю это:

1013 * "[" 70187225_683426155503359_4595847093867773952_n.jpg "" 70744555_683429382169703_8264311195482193920_n.jpg "]"

В базе данных сохраняется то же самое, что и BLOB

.

1 Ответ

0 голосов
/ 25 сентября 2019

Потому что $coverage->gallery не является массивом. Редактировать: Я видел, что ваш столбец галереи имеет тип двоичный.Я не знаю, возможно ли сохранить json_encoded String в двоичный столбец.

Я бы также рекомендовал вам использовать другую таблицу для элементов галереи, связанных с вашими записями покрытия.Взгляните на Eloquent Relationships

Если вы хотите сохранить свою текущую (и грязную) процедуру:

Если вы сохраните ее с json_econde(), вам придетсясначала декодируйте его, если хотите зациклить.

Попробуйте изменить столбец галереи на строку, а затем выполните @foreach(json_decode($cove->gallery, true) as $image)

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