Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel刀片嵌套在关系访问下面_Php_Laravel_Eloquent_Relationship_Laravel Blade - Fatal编程技术网

Php Laravel刀片嵌套在关系访问下面

Php Laravel刀片嵌套在关系访问下面,php,laravel,eloquent,relationship,laravel-blade,Php,Laravel,Eloquent,Relationship,Laravel Blade,我有一个嵌套的BelongsTo关系,在雄辩的Laravel中,当我尝试访问它一个级别时,它成功了,但当我尝试访问它两个级别时。其获取错误“尝试获取非对象的属性” 这是我的结构模型 OrderProduct.php public function product() { return $this->belongsTo('App\Models\Product'); } public function domain() { return $this->belongsTo

我有一个嵌套的BelongsTo关系,在雄辩的Laravel中,当我尝试访问它一个级别时,它成功了,但当我尝试访问它两个级别时。其获取错误“尝试获取非对象的属性”

这是我的结构模型

OrderProduct.php

public function product()
{
    return $this->belongsTo('App\Models\Product');
}
public function domain()
{
    return $this->belongsTo('App\Models\Domain');
}
Product.php

public function product()
{
    return $this->belongsTo('App\Models\Product');
}
public function domain()
{
    return $this->belongsTo('App\Models\Domain');
}
我想做的是从order_product eloquent获取域信息,我在blade上这样做了,但得到的错误是“试图获取非对象的属性”

但当我有产品雄辩,并试图访问域名,它的成功

$product = Product::first();
$domain_name = $product->domain->name;
如何通过产品->域关系从订单\产品访问域关系


谢谢

当您从没有域的产品中获取域时,会出现问题。您可以使用laravel可选功能:

$orderProduct = OrderProduct::with('product.domain')->first();
$domain_name = optional($orderProduct->product->domain)->name;
注意:我还使用了渴望加载来减少查询


如果a)
OrderProduct::first()
返回
null
(数据库中没有记录)b)发现
$order\u product
没有连接到它的产品c)发现
$order\u product->product
没有连接到它的域d)发现
product()
关系设置不正确。本地和外键的名称都共享?@devk好的,我想我需要重新检查我的数据关系,它是否与未连接id有关。谢谢如果你
dd($product->domain)
,结果是什么?你解决问题了吗?正如我在评论中提到的,这是发生这种情况的4种可能性之一。也就是说,在这种情况下,即时加载根本不会减少查询。它仅在加载多个父模型时减少查询