Вот мой код контроллера, чтобы показать детали заказа по идентификатору заказа. Когда нажимаете кнопку, чтобы проверить подробный порядок, я успешно получил идентификатор заказа, который поступает со страницы заказа, но не получает после 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)
поделитесь маршрутом для detailorders?
Что вы имеете в виду под but does not receive after findL. Пожалуйста, отредактируйте свой вопрос и, возможно, все же добавьте использованную функцию контроллера, если это может быть полезно для ответа на ваш вопрос. Возможно, этот сайт помогает: Как задать хороший вопрос. Спасибо!
маршрут в порядке, я передал идентификатор с именем маршрута, например, detailorder / {id}






Проблема в том, что вы отправляете в представление неправильные данные. Смотрите эту строку:
$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
Ну, а в вашей таблице orders есть строка с идентификатором 51? Опубликуйте свою модель orderdetail и миграцию для стола orders.
да, у меня есть строка в таблице заказов, а также идентификатор заказа в деталях заказа
И я предполагаю, что order-id не является первичным ключом в таблице orderdetail?
<? php namespace App; используйте Illuminate \ Database \ Eloquent \ Model; порядок классов расширяет модель {//}
order_id не является примитивным в моем orderdetail tbl
Смотрите мое редактирование; findOrFail() пытается найти запись на основе первичного ключа, установленного в модели (id по умолчанию), поэтому, если вы передаете orderId как $id, вам нужно вместо этого проверить это в запросе.
Я не знаю laravel, но, вы разыгрываете
$dataкак множество здесь:$data = (array)$this;. Как я уже сказал, я не знаю, как это обрабатывает laravel, но вы можете попробовать$data['id'].