我一直收到此错误试图获取非对象的属性。
这是我的控制器
public function onGoingOrder($orderNumber)
{
$orderNumber = westcoorder::where('id', $orderNumber)->firstOrFail();
$items = westcoorderitem::where('westcoorder_id', $orderNumber)->first();
return view('westco.onGoingOrder', compact('orderNumber', 'items'));
}
这就是我认为的内容
<div class="panel-heading">Order {{ $orderNumber->id }} Items</div>
<div class="panel-body">
@foreach ($items->westcoorderitems as $item)
<li>{{ $item }}</li>
@endforeach
</div>
</div>
这是我的两个模特
class westcoorder extends Model
{
protected $table = 'westcoorders';
protected $with = 'westcoorderitems';
protected $fillable = ['is_sent', 'is_delivered'];
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function westcoorderitems()
{
return $this->hasMany('App\westcoorderitem');
}
}
class westcoorderitem extends Model
{
protected $table = 'westcoorderitems';
protected $fillable = ['westcoorder_id','quantity', 'productName', 'productCode', 'price'];
public function westcoorders()
{
return $this->belongsTo('App\westcoorder');
}
}
当我尝试使用Order_id
这是我的表格的样子
Schema::create('westcoorders', function (Blueprint $table)
{
$table->increments('id');
$table->tinyInteger('is_sent')->default(0);
$table->tinyInteger('is_delivered')->default(0);
$table->timestamps();
} );
Schema::create('westcoorderitems', function (Blueprint $table)
{
$table->increments('id');
$table->Integer('westcoorder_id'); // fk for westcoOrder.id
$table->string('quantity');
$table->string('productName');
$table->string('productCode');
$table->decimal('price');
$table->timestamps();
} );
答案 0 :(得分:0)
在Laravel的最后一个版本中,很多内容都发生了变化。发布&gt; = 5时,模型不会自动加载到您的应用程序中。在您的控制器中,在命名空间{yournamespace}下;语句,用这种方式用use语句引用你需要的类:
use App\westcoorders
只是对公约的建议:尊重公约始终是一个好习惯。您的模型应该被称为WestCoorder和WestCoorderItem(注意类的CamelCase命名)。这个概念也适用于您的控制器(WestCoordersController和WestCoorderItemsController)
答案 1 :(得分:0)
首先,您应该在使用之前检查$orderNumber
是否存在:
@if ($orderNumber)
{{ $orderNumber->id }}
@endif
接下来,您尝试重复$items->westcoorderitems
,但是:
westcoorderitems
表格中看不到westcoorderitems
列,因此您不应尝试在此使用$items->westcoorderitems
。$items
是否为空。所以,你的代码应该是这样的:
<div class="panel-heading">Order @if ($orderNumber) {{ $orderNumber->id }} @endif Items</div>
<div class="panel-body">
@if ($items)
{{ $items->productName }}
@endif
</div>
</div>