Получить данные против идентификатора в Laravel - PullRequest
0 голосов
/ 07 сентября 2018

Вот мой код контроллера, чтобы показать детали заказа против идентификатора заказа. Когда я нажимаю кнопку, чтобы проверить подробный заказ, я успешно получил идентификатор заказа, который приходит со страницы заказа, но не получает после 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{

}

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

Попытка получить свойство 'id' необъекта
(Представление: C: \ xampp \ htdocs \ shopping_cart \ resources \ views \ template \ admin \ modules \ orders \ detailorders.blade.php)

1 Ответ

0 голосов
/ 07 сентября 2018

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

$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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...