Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
如何获得laravel 5.7中双重关系的价值?订单>;历史>;身材郎_Laravel_Eloquent_Eloquent Relationship - Fatal编程技术网

如何获得laravel 5.7中双重关系的价值?订单>;历史>;身材郎

如何获得laravel 5.7中双重关系的价值?订单>;历史>;身材郎,laravel,eloquent,eloquent-relationship,Laravel,Eloquent,Eloquent Relationship,我想显示数据库中的最新订单状态名称,但我在显示数据时遇到问题。这是我的密码: OrderController class OrderController extends Controller { public function index() { $orders = Order::with('shippingAddress', 'billingAddress', 'carrier', 'payment', 'status')

我想显示数据库中的最新订单状态名称,但我在显示数据时遇到问题。这是我的密码:

OrderController

    class OrderController extends Controller
    {
        public function index()
        {
            $orders = Order::with('shippingAddress', 'billingAddress', 'carrier', 'payment', 'status')->limit(300)->orderBy('id', 'DESC')->get();

        }
}
订单模型(切割)

订单历史模型

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' }}
每次结果都是错误,如“此集合实例上不存在属性[statusLanguage]”或类似错误

当我尝试dd($order->status)时,它会显示返回的与我需要的数据的关系:


那么错误在哪里呢

您正在尝试从OrderHistory实例的集合而不是从单个实例获取
statusLanguage
。尝试
$order->status[0]->statusLanguage->name

您试图从OrderHistory实例的集合而不是从单个实例获取
状态语言。尝试
$order->status[0]->statusLanguage->name

您尝试将模型集合作为单个对象进行访问

您可以在刀片文件中执行以下操作:

@foreach($order->status as $status)
    {{ $status->statusLanguage->name ?? 'No status' }}
@endforeach

有关的详细信息。

您正在尝试将模型集合作为单个对象进行访问

您可以在刀片文件中执行以下操作:

@foreach($order->status as $status)
    {{ $status->statusLanguage->name ?? 'No status' }}
@endforeach

有关的详细信息。

您是否在不循环的情况下打印数据?是否在不循环的情况下打印数据?是的,您是对的!当我尝试foreach(@cheran suggestion)时,它显示了一些json数据:{“id”:28698,“id_order”:11003,“id_status”:18,“id_employee”:0,“date_add”:“2019-02-12 21:13:23”,“status_language”:{“id_status”:18,“id_lang”:3,“name”:“PayU”}我认为我可以直接显示文本(因为我应该始终是一行/一列)@MarekKaliszuk如果你只想要一行,你应该修改你的代码,因为你创建了一个可能有多个结果的关系。是的,你是对的!当我尝试foreach(@cheran suggestion)时,它显示了一些json数据:{“id”:28698,“id_order”:11003,“id_status”:18,“id_employee”:0,“date_add”:“2019-02-12 21:13:23”,“status_language”:{“id_status”:18,“id_lang”:3,“name”:“PayU”}我认为我可以直接显示文本(因为我应该始终是一行/一列)@MarekKaliszuk如果您只想要一行,那么您应该修改代码,因为您创建了一个可以产生多个结果的关系。