首先,我想为此线程道歉,并且我知道SO上有很多类似的线程。在阅读了它们之后,我无法真正理解我的网站中发生了什么。框架是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));
}
参考方案
“试图获取非对象的属性”,这意味着您正在尝试获取
不存在的东西
。在OOP的类中,对象和对象具有与之关联的属性。您可以访问这些属性(如果存在)。
就您而言,它不存在。要克服此问题,请在访问以下值之前使用isset():
isset($order->order_id) ? $order->order_id : 'NA';
在这种情况下,如果该属性不存在,则代码不会引发错误,而是会进入其他部分并打印NA
PHP strtotime困境 - php有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP PDO组按列名称查询结果 - php以下PDO查询返回以下结果:$db = new PDO('....'); $sth = $db->prepare('SELECT ...'); 结果如下: name curso ABC stack CDE stack FGH stack IJK stack LMN overflow OPQ overflow RS…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
验证IBAN PHP - php在设计新平台时,我们尝试集成IBAN编号。我们必须确保IBAN已经过验证,并且存储在数据库中的IBAN始终正确。那么验证数字的正确方法是什么? 参考方案 正如我在其他问题中解释的逻辑一样,我尝试自己创建一个函数。根据Wikipedia文章中解释的逻辑,在下面找到合适的功能。国家特定验证。它适合吗http://en.wikipedia.org/wiki/Int…
PHP:对数组排序 - php请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…