Получить данные по id в Laravel

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

public function detailorders($id){
   print_r($id); die;
   $this->dorders = orderdetail::find($id);

   $data = (array)$this;

   return view('template/admin/modules/orders/detailorders',compact('data'));
}

Здесь код показывает всю информацию о заказе, который поступает со страницы заказа с идентификатором заказа.

<tr role = "row" class = "odd">
  <td class = "sorting_1">{{$data->id}}</td>
  <td>{{$data->order_id}}</td>
  <td>{{$data->product_id}}</td>
  <td>{{$data->price}}</td>
  <td>{{$data->subtotal}}</td>
  <td>{{$data->quantity}}</td>

orderdetail модель

namespace App;
use Illuminate\Database\Eloquent\Model;

class orderdetail extends Model{

}

Я получаю эту ошибку:

Trying to get property 'id' of non-object
(View: C:\xampp\htdocs\shopping_cart\resources\views\template\admin\modules\orders\detailorders.blade.php)

Я не знаю laravel, но, вы разыгрываете $data как множество здесь: $data = (array)$this;. Как я уже сказал, я не знаю, как это обрабатывает laravel, но вы можете попробовать $data['id'].

Jeff 07.09.2018 19:58

поделитесь маршрутом для detailorders?

Niklesh Raut 07.09.2018 19:59

Что вы имеете в виду под but does not receive after findL. Пожалуйста, отредактируйте свой вопрос и, возможно, все же добавьте использованную функцию контроллера, если это может быть полезно для ответа на ваш вопрос. Возможно, этот сайт помогает: Как задать хороший вопрос. Спасибо!

David 07.09.2018 20:37

маршрут в порядке, я передал идентификатор с именем маршрута, например, detailorder / {id}

Tayyab khan 07.09.2018 20:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
968
1

Ответы 1

Проблема в том, что вы отправляете в представление неправильные данные. Смотрите эту строку:

$data = (array)$this;

Это означает, что вы конвертируете контроллер в array и отправляете его в представление. Вы получаете сообщение об ошибке, поскольку вы не можете использовать объектный доступ ->... на array, но это не вся проблема. Исправьте свой код ниже:

public function detailorders($id){
  // Removed print_r() and die(); not needed here, and prevents execution.
  $dorder = orderdetail::findOrFail($id); // Changed to findOrFail; will thrown an error if unable to find record.

  return view('template/admin/modules/orders/detailorders',compact('dorder'));
}

Затем в вашем файле просмотра просто укажите:

<tr role = "row" class = "odd">
  <td class = "sorting_1">{{$dorder->id}}</td>
  <td>{{$dorder->order_id}}</td>
  <td>{{$dorder->product_id}}</td>
  <td>{{$dorder->price}}</td>
  <td>{{$dorder->subtotal}}</td>
  <td>{{$dorder->quantity}}</td>

Обновлено: findOrFail($id) проверяет наличие where id = ? в вашей таблице orderdetail. Чтобы исправить это, используйте

$dorder = orderdetail::where("order_id", " = ", $id)->firstOrFail();

Это проверит наличие where order_id = ? в вашей таблице orderdetail.

Нет результатов по запросу для модели [App \ orderdetail] 51

Tayyab khan 07.09.2018 21:01

Ну, а в вашей таблице orders есть строка с идентификатором 51? Опубликуйте свою модель orderdetail и миграцию для стола orders.

Tim Lewis 07.09.2018 21:11

да, у меня есть строка в таблице заказов, а также идентификатор заказа в деталях заказа

Tayyab khan 07.09.2018 21:15

И я предполагаю, что order-id не является первичным ключом в таблице orderdetail?

Tim Lewis 07.09.2018 21:16

<? php namespace App; используйте Illuminate \ Database \ Eloquent \ Model; порядок классов расширяет модель {//}

Tayyab khan 07.09.2018 21:16

order_id не является примитивным в моем orderdetail tbl

Tayyab khan 07.09.2018 21:18

Смотрите мое редактирование; findOrFail() пытается найти запись на основе первичного ключа, установленного в модели (id по умолчанию), поэтому, если вы передаете orderId как $id, вам нужно вместо этого проверить это в запросе.

Tim Lewis 07.09.2018 21:20

Другие вопросы по теме