gpt4 book ai didi

php - 未定义的属性:Illuminate\Database\Eloquent\Collection::Laravel 5.2

转载 作者:行者123 更新时间:2023-11-29 01:37:36 26 4
gpt4 key购买 nike

我正在尝试让 iot 显示订单中的商品,但我一直收到此错误

这些是我的模型

class westcoorder extends Model
{
protected $table = 'westcoorders';
protected $with = 'westcoorderitem';

protected $fillable = ['is_sent', 'is_delivered'];

/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function westcoorderitem()
{
return $this->hasMany('App\westcoorderitem');
}
}

class westcoorderitem extends Model
{
protected $table = 'westcoorderitems';

protected $fillable = ['westcoorder_id','quantity', 'productName', 'productCode', 'price'];


public function westcoorder()
{
return $this->belongsTo('App\westcoorder');
}
}

这是我的 Controller

public function onGoingOrder($orderNumber)
{
$orderNumber = westcoorder::where('id', $orderNumber)->firstOrFail();

$items = westcoorderitem::where('westcoorder_id', $orderNumber)->get();

return view('westco.onGoingOrder', compact('orderNumber', 'items'));
}

这就是我的看法

<div class="panel-heading">Order @if ($orderNumber) {{ $orderNumber->id }} @endif Items</div>
<div class="panel-body">
@if($items)
{{ $items->productName }}
@endif
</div>

这是我的表格的样子

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();
} );

这是我遇到的错误

Undefined property: Illuminate\Database\Eloquent\Collection::$productName

最佳答案

比如你的错误状态:

Undefined property: Illuminate\Database\Eloquent\Collection::$productName

您正在尝试访问集合的属性,而不是模型。首先,您可以利用您创建的关系,如下所示:

$order = App\westcoorder::where('id', $orderNumber)->with('westcoorderitem')->firstOrFail();

这将确保订单商品将包含在结果中,而不是执行另一个查询来获取它们。

然后您可以将 $order 传递给 View :

return view('welcome', compact('orderNumber', 'order'));

(您也可以省略实际订单的 orderNumber)

然后您可以在 View 中访问 order 并像这样遍历 items:

@foreach($order->westcoorderitem as $item)
{{ $item->productName }}
@endforeach

FK

另一个提示可能是更新您的表以使用索引来提高性能并使其整洁,就像您在创建迁移的评论中提到的 FK 一样。你可以做一个migration更新它,例如:

$table->foreign('westcoorder_id')->references('id')->on('westcoorders');

和/或根据您的需要(级联等)对此进行扩展。

关于php - 未定义的属性:Illuminate\Database\Eloquent\Collection::Laravel 5.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36143589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com