Почему я получаю все свои продукты, а не только один, на мой взгляд?

#laravel #laravel-7

#ларавель #ларавель-7

Вопрос:

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

Итак, вот как я храню свои билеты:

 public function store(Request $request){  /*dd($request-gt;all());*/  $ticket = new Ticket();     if($request-gt;file('file')){  $file = $request-gt;file('file');  $filename = time().'.'.$file-gt;getClientOriginalName();  $request-gt;file-gt;move('storage/', $filename);  $ticket-gt;file = $filename;  }    /*$ticket-gt;cuenta_id = $request-gt;cuenta_id;*/  $ticket-gt;contact_id = $request-gt;contact_id;  $ticket-gt;statusTicket_id = $request-gt;statusTicket_id;  $ticket-gt;typeTicket_id = $request-gt;typeTicket_id;  $ticket-gt;idOwner = Auth::user()-gt;id;     $ticket-gt;product_id = $request-gt;product_id;  $ticket-gt;serial_number = $request-gt;serial_number;  $ticket-gt;accesories = $request-gt;accesories;    $ticket-gt;entry = Carbon::parse ( $request-gt;entry)-gt;toDateString();  $ticket-gt;deliver = Carbon::parse ($request-gt;deliver)-gt;toDateString();         $ticket-gt;save();        Session::flash('success');  return redirect()-gt;route('tickets.view');  }  

И это мой метод детализации:

 public function detail($id){  $detailData = Ticket::find($id);  $detailData['contacts'] = Contact::all();  $detailData['products'] = Product::all();  $detailData['ptypes'] = Ptype::all();  $detailData['brands'] = Brand::all();  $detailData['models'] = ModelP::all();   return view('backend.ticket.detail-ticket', compact('detailData'));  }  

Поэтому, на мой взгляд, я передаю свой продукт следующим образом:

 @foreach($detailData['products'] as $product)  lt;div class="form-group col-md-3"gt;  lt;label for="product_id"gt;Productolt;/labelgt;  lt;input type="text" name="product_id" value="{{$product-gt;ptype-gt;productType . ", " . $product-gt;marca-gt;brandName . " " . $product-gt;modelo-gt;modelName}}" class="form-control" readonlygt;  lt;/divgt;  

@endforeach

И это изображение того, как он приносит мне данные:

введите описание изображения здесь

Там должен быть только один продукт, но вместо этого у меня есть весь мой список продуктов.

Есть идеи, что я делаю не так при передаче данных в мое представление?

Ответ №1:

в этой строке:

 $detailData['products'] = Product::all();  

вы загружаете все продукты, а не только нужный продукт …

это должно быть:

 $detailData['products'] = Product::find($detailData-gt;product_id);  

Комментарии:

1. Но теперь я получаю еще одну ошибку, на мой взгляд, Trying to get property 'ptype' of non-object

2. потому что нет необходимости в @foreach($detailData[‘продукты’] как $продукт)

3. $detailData[«продукты»] будет содержать только одну запись

4. Удалив foreach и передав его таким образом, я все равно получаю ту же ошибку. value="{{$detailData-gt;ptype-gt;productType . ", " . $detailData-gt;marca-gt;brandName . " " . $detailData-gt;modelo-gt;modelName}}"