【问题标题】:Laravel Error: "Trying to get property of non-object"Laravel 错误:“试图获取非对象的属性”
【发布时间】:2017-02-28 19:16:21
【问题描述】:

我有一个从数据库中填充的表格:

@extends('layouts.master')
@section('main')
@parent
<table border=1 align=center;>
<tr><td rowspan=10><img src="media/productimg/question.jpg" width=250px></td>
<th>Márka</th><td colspan=3>{{ $productdetails->brand }}</td></tr>
<tr><th>Beszállító</th><td colspan=3>{{ $productdetails->supplier }}</td></tr>
<tr><th>{{ $productdetails->type }}</th>
<th colspan=3>{{ $productdetails->name }}</th></tr>
<tr><th>Nettó beszerzési ár</th><td>{{ $productdetails->wholeprice }} Ft</td>
<th rowspan=2>Ár</th><td rowspan=2>{{ $productdetails->price }} Ft</td></tr>
<tr><th>Bruttó beszerzési ár</th><td>{{ $productdetails->wholeprice }} Ft</td>
<tr><th>Vonalkód</th><td>{{ $productdetails->barcode }}</td><th>Raktáron</th><td>{{ $productdetails->count }} {{ $productdetails->dimension }}</td></tr>
<tr><th>Elhelyezkedés</th><td>{{ $productdetails->whereis }} {{ $productdetails->whereis2 }}</td><th>Küszöb</th><td>{{ $productdetails->threshold }} {{ $productdetails->dimension }}</td></tr>
<tr><th>Utolsó rendelés</th><td> NA </td>
<th>Utolsó vásárlás</th><td> NA </td></tr>
<tr><td colspan=5><a href="stock_productimageupload.php"><button class="button">Kép szerkesztése</button></a>
<a href="stock_productupdate.php"><button class="button">Termék szerkesztése</button></a>
<a href="stock_productcountupdate.php"><button class="button">Mennyiség szabályozása</button></a></td></tr>
</table>
@endsection

我得到了这个错误:

20d205ed160f36c734b8252e44ac81bfa0977988.php 第 6 行中的错误异常: 试图获取非对象的属性

如果我用

替换表格
<?php print_r($productdetails);?>

我得到了具有良好值的数组。

出了什么问题?

【问题讨论】:

  • 如果你有数组——你为什么要使用-&gt;
  • 这是我在 Laravel 的第一个项目,教程展示了这种方法

标签: php html laravel laravel-5.3


【解决方案1】:

您是说数组将按原样显示。

您可以尝试例如:
{{ $productdetails['type'] }} 而不是 {{ $productdetails-&gt;type }}

但是请把print_r($productdetails)函数的结果贴出来,让我们看看代码有什么问题。

【讨论】:

  • Array ( [0] => stdClass Object ( [ID] => 1 [barcode] => 01233 [brand] => Ismeretlen [supplier] => 1 [type] => Építésianyag [name ] => Homok [img] => homok.jpg [wholeprice] => 3000 [price] => 5500 [VAT] => 3 [whereis] => U [whereis2] => 1 [count] => 8 [dimension ] => m3 [阈值] => 1 [lastsell] => [lastbuy] => [lastchange] => 2017-02-23 20:56:46 [register] => ) )
  • 我猜你的 $productdetails 来自 Eloquent get() 方法(或者可能是 get()-&gt;toArray() 方法)。如果您使用它,这意味着您有一个 objectsarray,从您添加的转储中非常清楚。你要么使用first() 而不是get()(如果它适合你的控制器),或者你应该在你的视图中使用$productdetalis[0]-&gt;barcode(这很难看)。
  • 如果有帮助:控制器看起来像这样: class ProductDetailsController extends Controller { public function productdetails($id){ $productdetails = DB::select('select * FROM inventory WHERE barcode = ?', [$id]);;返回视图('productdetails',['productdetails'=>$productdetails]); } } ID 来自 URL
  • 尝试考虑 Eloquent 方式,即 App\Inventory::where('barcode', '=', $id)->first();然后它应该在您的视图中起作用。
【解决方案2】:

解决方案是:{{ $productdetails[0]-&gt;type }}

感谢@rahul_m 的回答:

一旦检查数组的结构,它首先具有第 0 个索引,

你应该得到它,

{{$product[0]-&gt;brand}}

$product = DB::table("inventory")-&gt;where("barcode", $id)-&gt;first(); // and get data as echo $product-&gt;brand;

试一试,应该可以的。

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 2018-06-02
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2020-10-21
    相关资源
    最近更新 更多