在Laravel中获取针对ID的数据

时间:2018-09-07 17:53:54

标签: php laravel laravel-5

这是我的控制器代码,用于根据订单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)

1 个答案:

答案 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 = ?