如何访问laravel 5.7中双重关系的值?顺序 > 历史 > statur lang
How access value of double relation in laravel 5.7? order > history > statur lang
我想显示来自数据库的最新订单状态名称,但我在显示数据时遇到问题。这是我的代码:
OrderController
class OrderController extends Controller
{
public function index()
{
$orders = Order::with('shippingAddress', 'billingAddress', 'carrier', 'payment', 'status')->limit(300)->orderBy('id', 'DESC')->get();
}
}
OrderModel(截断)
public function status()
{
return $this->hasMany('App\Ss\Models\OrderHistory','id_order', 'id')
->orderBy('date_add', 'DESC')
->limit(1)
->with('statusLanguage');
}
订单历史模型
class OrderHistory extends Model
{
protected $table="order_history";
public $timestamps = false;
public function statusLanguage(){
return $this->hasOne('App\Ss\Models\StatusLanguage', 'id_status', 'id_status');
}
}
我是如何尝试显示的:
{{ $order->status()->statusLanguage()->name ?? 'No status' }}
{{ $order->status()->statusLanguage->name ?? 'No status' }}
{{ $order->status->statusLanguage->name ?? 'No status' }}
每次结果都是 "Property [statusLanguage] does not exist on this collection instance." 或类似的错误。
当我尝试 dd($order->status) 它显示返回的与我需要的数据的关系:
那么错在哪里呢?
您正在尝试从 OrderHistory 实例集合而不是单个实例中获取 statusLanguage
。试试 $order->status[0]->statusLanguage->name
.
您正在尝试访问 Collection 个模型作为单个 object。
您可以在 blade 文件中执行以下操作:
@foreach($order->status as $status)
{{ $status->statusLanguage->name ?? 'No status' }}
@endforeach
有关 relationships with eloquent here 的更多信息。
我想显示来自数据库的最新订单状态名称,但我在显示数据时遇到问题。这是我的代码:
OrderController
class OrderController extends Controller
{
public function index()
{
$orders = Order::with('shippingAddress', 'billingAddress', 'carrier', 'payment', 'status')->limit(300)->orderBy('id', 'DESC')->get();
}
}
OrderModel(截断)
public function status()
{
return $this->hasMany('App\Ss\Models\OrderHistory','id_order', 'id')
->orderBy('date_add', 'DESC')
->limit(1)
->with('statusLanguage');
}
订单历史模型
class OrderHistory extends Model
{
protected $table="order_history";
public $timestamps = false;
public function statusLanguage(){
return $this->hasOne('App\Ss\Models\StatusLanguage', 'id_status', 'id_status');
}
}
我是如何尝试显示的:
{{ $order->status()->statusLanguage()->name ?? 'No status' }}
{{ $order->status()->statusLanguage->name ?? 'No status' }}
{{ $order->status->statusLanguage->name ?? 'No status' }}
每次结果都是 "Property [statusLanguage] does not exist on this collection instance." 或类似的错误。
当我尝试 dd($order->status) 它显示返回的与我需要的数据的关系:
那么错在哪里呢?
您正在尝试从 OrderHistory 实例集合而不是单个实例中获取 statusLanguage
。试试 $order->status[0]->statusLanguage->name
.
您正在尝试访问 Collection 个模型作为单个 object。
您可以在 blade 文件中执行以下操作:
@foreach($order->status as $status)
{{ $status->statusLanguage->name ?? 'No status' }}
@endforeach
有关 relationships with eloquent here 的更多信息。