मैं अपनी उत्पाद तालिका से एक रिकॉर्ड हटाने की कोशिश कर रहा हूं, प्रत्येक उत्पाद में एक छवि होती है। मुझे नहीं पता कि छवि को उस फ़ाइल से कैसे हटाया जाए जहां यह संग्रहीत है।

Product.js

$(document).ready(function() {    

    $("#btn-delete").click(function() {
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.ajax({
            type: 'DELETE',
            url: '/product/' + $("#frmDeleteProduct input[name=product_id]").val(),
            dataType: 'json',
            success: function(data) {
                $("#frmDeleteProduct .close").click();
                window.location.reload();
            },
            error: function(data) {
                console.log(data);
            }
        });
    });
});

function deleteProductForm(product_id) {
    $.ajax({
        type: 'GET',
        url: '/product/' + product_id,
        success: function(data) {
            $("#frmDeleteProduct #delete-title").html("¿Do you want to delete this product (" + data.products.name + ")?");
            $("#frmDeleteProduct input[name=product_id]").val(data.products.id);
            $('#deleteProductModal').modal('show');
        },
        error: function(data) {
            console.log(data);
        }
    });
}

ProductController.php

मैंने पढ़ा है कि मुझे अपने नियंत्रक File::delete('img/products/' . $image); में ऐसा कुछ डालने की ज़रूरत है, लेकिन अब मैं नहीं करता।

public function destroy($id)
    {

        //File::delete('img/products/' . $image); 
        $products = Product::destroy($id);

        return response()->json([
            'error' => false,
            'products'  => $products,
        ], 200);
    }
1
Daniel T. 23 अक्टूबर 2019, 22:59

1 उत्तर

सबसे बढ़िया उत्तर

जब आपकी छवि सहेजी गई थी, तो आपको File::delete() पूरे पथ के पैरामीटर के रूप में पास करना होगा। उदाहरण के लिए, यदि आपकी छवियां उपनिर्देशिका img/products/ में लार्वा संग्रहण पथ में थीं, और छवि का नाम .jpg एक्सटेंशन वाले उत्पाद की आईडी है, तो आप यह कर सकते हैं:

public function destroy($id)
{
    $fullImgPath = storage_path("img/products/$id.jpg");
    if(File::exists($fullImgPath)) {
        File::delete($fullImgPath);
    }

    $products = Product::destroy($id);

    return response()->json([
        'error' => false,
        'products'  => $products,
    ], 200);
}

लेकिन अगर आपके Product मॉडल में इमेज का नाम है, तो आप यह कर सकते हैं:

public function destroy($id)
{
    $product = Product::find($id);

    $fullImgPath = storage_path("img/products/".$product->image_name);
    if(File::exists($fullImgPath)) {
        File::delete($fullImgPath);
    }

    $product->delete();

    return response()->json([
        'error' => false,
        'products'  => $product->id,
    ], 200);
}
0
Jean Marcos 23 अक्टूबर 2019, 20:34