>  Q&A  >  본문

LARAVEL: foreach의 모든 요소는 ID가 1이므로 삭제가 불가능합니다.

제 상황은 매우 어렵습니다. 스크래퍼를 이용해서 출생목록 클론을 만들고 있는데 경험이 없어서 코딩하는데 어려움을 겪고 있습니다. 크롤링해야 할 링크와 연결될 사이트 및 카테고리를 지정할 수 있는 사이트, 카테고리 및 링크 양식을 삽입하기 위한 여러 양식이 있는 관리 페이지를 성공적으로 만들었습니다. 그런데 이런걸 추가하는건 괜찮은데 삭제하는건 안되는거..

내 사이트, 카테고리 및 링크는 각 요소에 대한 가져오기 및 삭제 버튼과 함께 내 관리 페이지에 표시됩니다. 행의 마지막 항목을 삭제하면 첫 번째 요소가 삭제됩니다. 다른 것을 삭제하고 싶을 때 laravel은 예외를 발생시키고 null에서 속성을 읽으려고 시도합니다. 이는 해당 속성이 더 이상 존재하지 않음을 의미합니다. 기능을 제거하기 전에 덤프하고 죽으면 모든 목록의 모든 항목 ID는 "1"입니다. 이것이 행의 첫 번째 항목을 삭제하는 이유입니다. 누구든지 나를 도와줄 수 있나요?

항목 삭제를 요청하는 ID가 URL에서 검색되었고 URL에 제공된 ID가 사용자 ID인 1이기 때문인 것 같습니다. 따라서 누구든지 나에게 힌트를 주어 내가 사용자의 ID를 다른 방식으로 제공할 수 있는지 확인하십시오. 알려줘요! 내 코드:

관리 컨트롤러:

으아아아

내 관리 페이지:

으아아아

내 경로:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Website;
use App\Models\Category;
use App\Models\Link;
use Goutte\Client;


class AdminController extends Controller
{
    public function showAdmin($id)
    {

        $categories = Category::all();
        $websites = Website::all();
        $links = Link::all();
        return view('admin', compact('categories', 'websites', 'links'));
    }

    public function storeWeb(Request $request)
    {
            $web = Website::create([
                'title' => $request->input('site'),
                'url' => $request->input('url')
            ]);
        return back();
    }

    public function destroyWeb(Request $request, $id)
    {
        $web = Website::find($id);
        $web->delete();
        return back();
    }

    public function storeCat(Request $request)
    {
        $cat = Category::create([
            'title' => $request->input('title')
        ]);
        return back();
    }

    public function destroyCat(Request $request, $id)
    {
        $cat = Category::find($id)->first();
        $cat->delete();
        return back();
    }

    public function storeLink(Request $request) 
    {
        $link = Link::create([
            'url' => $request->input('scrapeUrl'),
            'main_filter_selector' => $request->input('filter'),
            'website_id' => $request->input('website_id'),
            'category_id' => $request->input('category_id'),
        ]);
        return back();
    }

    public function destroyLink(Request $request, $id)
    {
        $link = Link::find($id);
        dd($link);
        $link->delete();
        return back();
    }


    public function scrape(Request $request)
    {
        $link = Link::find($request->link_id);

        $scraper = new Scraper (new Client());

        $scraper->handle($link);

        if($scraper->status == 1) {
            return response()->json(['status' => 1, 'msg' => 'Scraping done']);
        } else {
            return response()->json(['status' => 2, 'msg' => $scraper->status]);
        };

    }
}

P粉064448449P粉064448449288일 전504

모든 응답(1)나는 대답할 것이다

  • P粉403549616

    P粉4035496162024-01-29 16:41:58

    이 코드를 교체하세요

    으아악

    이걸로

    으아악

    귀하의 destroyLink() 메소드에는 다음이 포함되어야 합니다

    으아악

    회신하다
    0
  • 취소회신하다