首先,我想为这个线程道歉,我知道在这个线程上有很多类似的线程。在他们上看了之后,我真的不明白在我的网站上发生了什么。框架是Laravel-4.2
几个小时后现场还好,一切都很顺利。现在,当我尝试访问这些页面时,很少有页面获得Trying to get property of non-object。不是所有的页面..。只要2-3。
例如,这是在我的控制器显示所有订单。
public function orders() {
$orders = Order::select('*')->orderBy('order_id', 'DESC')->paginate(5);
return View::make('site.admin.orders', [
'orders' => $orders
]);
}这在我看来
@foreach($orders as $order)
<tr>
<td class="text-center">{{ $order->order_id }}</td>
<td class="text-center">{{ $order->user->username }}</td>
// few more <td>`s
</tr>
@endforeach错误出现在第一个<td>上:
<td class="text-center">{{ $order->order_id }}</td>完全相同的代码在其他网站上工作(拷贝这一个)。我知道在这种情况下我可以把$order->order_id改成$order['order_id'].
为什么会发生这种事?如何预防?我不明白这个错误的本质。这对我来说很奇怪,因为这是在网站的精确副本上工作的。
更新:这是我的型号
public function getOrderData($data) {
$dataArray = json_decode($data, true);
$data = json_decode($data);
$arrayKeys = array_keys($dataArray);
$arrayKeys = array_filter($arrayKeys, function($value) {
return ($value !== 'shipping');
});
$productIds = implode(',', $arrayKeys);
$products = DB::table('products')
->leftjoin('category', 'products.category_id', '=', 'category.category_id')
->leftjoin('sub_category', 'products.sub_cat_id', '=', 'sub_category.sub_cat_id')
->where('product_id',$productIds)
->get();
foreach ($products as $item) {
if(!in_array($item->product_id, $arrayKeys)) continue;
$dataArray[$item->product_id]['category'] = $item->category_name;
$dataArray[$item->product_id]['sub_category'] = $item->sub_cat_name;
}
return json_decode(json_encode($dataArray));
}发布于 2016-10-23 06:22:01
“试图获取非对象的属性”,这意味着您正在尝试获取不存在的东西。
。在OOP中,类有对象,对象具有与它们相关联的属性。如果这些属性存在,您可以访问它们。
在你的情况下它根本不存在。要克服此问题,请在访问以下值之前使用isset():
isset($order->order_id) ? $order->order_id : 'NA';在这种情况下,如果属性不存在,则代码不会抛出错误,相反,它将进入其他部分并打印NA。
发布于 2016-10-23 06:05:20
这意味着您正在尝试访问某些东西的属性,这不是一个对象。例如,如果你做这样的事情
$model = MyModel::model()->findByPk('non_existent_primary_key');$model将是null,所以如果您这样做了
echo $model->id;你会得到这个错误的。
发布于 2019-12-07 08:32:20
你是按命令返回的
return View::make('site.admin.orders', [
'orders' => $orders
]);但却试图按顺序进入。
https://stackoverflow.com/questions/40199888
复制相似问题