Как получить значение двойного отношения в laravel 5.7?заказ> история> статуи ланга - PullRequest
0 голосов
/ 25 февраля 2019

Я хотел бы отобразить название статуса последнего заказа из базы данных, но у меня проблема с отображением данных.Вот мой код:

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

OrderHistoryмодель

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) , он показывает возвращаемую связь с данными, которые мне нужны: enter image description here

Такгде ошибка?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы пытаетесь получить доступ к Коллекции моделей как к одному объекту.

В файле блейда вы можете сделать следующее:

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

Дополнительная информация о отношенияхс красноречивым здесь .

0 голосов
/ 25 февраля 2019

Вы пытаетесь получить statusLanguage из коллекции экземпляров OrderHistory, а не из одного экземпляра.Попробуйте $order->status[0]->statusLanguage->name.

...