laravel, когда я использую find, я получаю эту ошибку: Вызов неопределенного метода Intervention \ Image \ ImageManager :: find () - PullRequest
0 голосов
/ 04 августа 2020

Я получаю доступ к изображениям через связь в клинке. Я хочу удалить определенное изображение c через l oop, которое у меня уже есть. И я могу получить конкретное изображение c в функцию destroyImg . Но мне не удается удалить его в destroyImg .

Когда я пытаюсь сначала его найти, я получаю следующую ошибку:

Call to undefined method Intervention\Image\ImageManager::find()

Когда я убиваю и выгружаю изображение по идентификатору я вижу указанное изображение c. Например:

{
  "id": 79,
  "post_id": 31,
  "image": "1596537701-116796500_331884521301081_8587878113120337546_n.jpg",
  "created_at": "2020-08-04T10:41:41.000000Z",
  "updated_at": "2020-08-04T10:41:41.000000Z"
}

blade-файл

 @foreach($posts as $post)
  @for($i=0;  $i< count($image = $post->images()->get()); $i++)
      //loop has some own operations here


     <form action="/img/delete/{{$image[$i]  }}" enctype="multipart/form-data" method="POST">
   </form>
 @endforeach

постконтроллер

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Intervention\Image\Facades\Image;

use Carbon\Carbon;
use App\User;
use App\Post;



use Illuminate\Http\Request;

 public function destroyImg($id)
{
  dd($id);
  $try = Image::find($id);
 
   //$id->delete();
  $user = Auth::guard('web')->id();
  ($user);
  
  return redirect()->route('home',['user'=>$user]);
}

Ответы [ 3 ]

0 голосов
/ 04 августа 2020

Проблема в том, что вы импортируете Intervention\Image\Facades\Image, который не имеет метода поиска, я предполагаю, что вы действительно хотите вызвать find в своей модели App\Image.

Измените следующее:

use Intervention\Image\Facades\Image as ImageManager;
use App\Image;

После этого обновите все вызовы до Image::, которые должны вызывать Intervention\Image\Facades\Image на ImageManager::

0 голосов
/ 04 августа 2020

При изменении формы с {{$image[$i]['id'] }} на {{$image[$i]->id }} мне удалось использовать find с моделью изображения, передав модель в функции destroyImg .

Примечание: модель изображения - images

postcontroller

 use Intervention\Image\Facades\Image;
 use App\images;

 public function destroyImg(images $images, $id)
 {
    
    $try = images::find($id); 
    $try->delete();
    
    
    $user = Auth::guard('web')->id(); 
    return redirect()->route('home',['user'=>$user]);
 }
0 голосов
/ 04 августа 2020

Ваш оператор dd(), кажется, показывает вам строку, которая содержит json представление изображения, которое вы sh хотите удалить. Вы помещаете эту строку в переменную с именем $ id. $ id, вероятно, должен быть целым числом?

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

<form action="/img/delete/{{$image[$i]['id'] }}" enctype="multipart/form-data" method="POST">

или

 <form action="/img/delete/{{$image[$i]->id }}" enctype="multipart/form-data" method="POST">

Если ни один из них не решает проблему, что обновленный вывод оператора dd() выглядят с установленными?

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