这是我的控制器代码,用于根据订单ID显示订单详细信息。按下按钮检查详细订单时,我已经成功接收到来自订单页面的订单ID,但在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)
答案 0 :(得分:0)
问题是您没有向视图发送正确的东西。看到这一行:
log4net.Config.XmlConfigurator.Configure(new Uri(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "YouAppConfigFile.config")));
Log = log4net.LogManager.GetLogger("ServiceClass1");
Log.Info("ServiceClass1 Started!!!");
这意味着您正在将Controller转换为$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 = ?
。