Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

how to retrieve image and imagess data using one to many relationship

i’m working on a E-commerce like project where users can upload multiple images of a particular product, i have a one-to-many relation where many images has one description and price. so on the homepage i need to call a single image out of the total uploaded and also fetch the descrition of the image, so when view button is clicked the user can see the rest of the image sliding.

upload Controller

public function store(Request $request)
{
    $request->validate([
        'farm_name'=> 'required',
        'farmer_name'=>'required',
        'min_order'=>'required',
        'qty'=>'required',
        'product_package'=>'required',
        'descr'=>'required',
        'images' => 'required',
        'images.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        //'' => 'image|mimes:jpeg,png,jpg,gif,svg|max:6048',
    ]);

    $input = new Product;
    $input->farm_name = $request->farm_name;
    //$input->user_id = Auth::user()->id;
    $input->farmer_name = $request->farmer_name;
    $input->tel = Auth::user()->tel;
    $input->farm_adrs = Auth::user()->adrs;
    $input->state = Auth::user()->state;
    $input->email = $request->email;
    $input->qty = $request->qty;
    $input->descr = $request->descr;
    $input->product_package = $request->product_package;
    $input->catr = $request->catr;
    $input->lga = $request->product_name;
    $input->amount = $request->amount;
    //$input->img = $request->images;
    //dd($input);
    $input->save();

    foreach($request->file('images') as $imageFile){
        $image = new Image;
        
        $imageName = time().rand(1,99).'.'.$imageFile->extension();  
        $imageFile->move(public_path('images'), $imageName);
        $image->images_id = $input->id;
        $image->name = $imageName;
        $image->save();


    }
    return back()
            ->with('success','Your Product is succesfully Uploaded.');

}

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

//show image this where i have problem

public function index(){
    $products = Product::all();
    foreach($products as $product){
        $product_id = $product->id;
        $images = Image::find($product_id);
    }

        return view('app.index',  compact('products', 'images'));
   
    
}

>Solution :

First of all u re saving product id as image_id on image table. Is this your correct column? if you are using image_id to save related product id, then change the index code to

public function index(){
$images=[];
$products = Product::all();
foreach($products as $product){
    $product_id = $product->id;
    $images[$product_id] = Image::where('image_id',$product_id)->get();
}

    return view('app.index',  compact('products', 'images'));


}

it will give you all the images from all product set upped with index of product id.
in a better way you can directly join the table. it will reduce the no. of executing query.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading