2016-07-26 4 views
0

Я пытаюсь получить объект из табличных заказов со связанными атрибутами из таблицы order_status_history. Из таблицы order_status_history мне нужна только последняя запись со статусом «Просмотр», поэтому я использую сортировку asc по полю created_at. Мой код до сих пор, но я получаю ошибку.Laravel whereHas eloqvent Отношение

$orders = Order::GetOrderHistoryReviewing()->get(); 

public function scopeGetOrderHistoryReviewing($query) 
    { 
     return $query->whereHas('statusHistory', function($q) { 

      $q->where('status', 'Reviewing')->orderBy('created_at','desc')->first(); 

     }); 
    } 

я нужен один объект с соотношением из второй таблицы

это моя ошибка

[2016-07-27 08:37:26] dev.ERROR: exception 'PDOException' with message 'SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "orders" 
LINE 1: ...ries" where "order_status_histories"."order_id" = "orders"."... 
+1

Так что ваш вопрос? Вы упомянули ошибку, но я не вижу никаких ошибок в вашем сообщении. Если вам нужна помощь, вам нужно предоставить дополнительную информацию, текст из ошибок, которые вы получаете, то, что вы пробовали до сих пор, чтобы исправить это и т. Д. – Styphon

+0

Я думаю, что сначала не работает, я получаю ошибку запроса –

+0

Отлично, вы все еще не сказали нам об ошибке. Скопируйте точные слова, которые дает вам ошибка, и обновите свой вопрос с ними ... – Styphon

ответ

0

Из вашего вопроса, вы, видимо, пытаясь создать область, которая возвращает заказы со статусом, «Просмотр» и сортировка результатов в порядке убывания.

Вы должны удалить first() вызов из $q подзапроса и двигаться orderBy к концу вашего $query. Ваш код должен выглядеть так.

public function scopeGetOrderHistoryReviewing($query) 
{ 
    return $query->whereHas('statusHistory', function($q) { 

     $q->where('status', 'Reviewing'); 

    })->orderBy('created_at','desc'); 
} 

Тогда вы можете сделать:

$orders = Order::GetOrderHistoryReviewing()->get(); 
//OR to get the first record 
$first_order = Order::GetOrderHistoryReviewing()->first(); 
+0

, но мне нужна первая запись из statusHistory order by desc not table Заказы –

+0

Тогда вы можете использовать 'orderBy ('statusHistory.created_at', 'desc') 'вместо :) –

+0

но я не получу первую запись –