Прежде всего, я хочу извиниться за нить, и я знаю, что на 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']
...
Почему это происходит? Как предотвратить это? Я не понимаю природу этой ошибки. И это очень странно для меня, потому что это работает на точной копии сайта.
Update: Это мой Модель:
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));
}
Похоже, что Eloquent ORM жонглирует между массивом и представлением объектов результатов запроса ... –
Хорошо. Я также добавил свою модель. Что это значит? Как можно моделировать «решить» массив или объект? – Garg
И как этот кусок кода работать на сайте на том же сервере, но в другой папке. Но не будет работать в другой папке? Я действительно смущен. – Garg