2016-06-04 2 views
0

Что я пытаюсь получить в AppNamespace, AppModule и AppController. Поэтому я использую Laravel 5.2 с красноречивым и запустить:Eloquent whereHas and With()

$this->namespaceModel->whereTitle($this->namespace) 
    ->whereHas('modules', function ($q) 
    { 
     $q->whereTitle($this->module); 
    }) 
    ->whereHas('modules.controllers', function ($q) 
    { 
     $q->whereTitle($this->controller); 
    }) 
    ->first(); 

Это дает мне ложную или истинную в зависимости от результатов, а не саму запись. Я также использовал with(), но это не возвращает запись, если whereHas() возвращает true. Как я могу это исправить?

ответ

1

В качестве альтернативы вы можете использовать присоединяется по этому запросу, как это:

$this->namespaceModel->whereTitle($this->namespace) 
    ->join('modules', 'namespaces.id', '=', 'modules.namespace_id') 
    ->join('controllers', 'modules.id', '=', 'controllers.module_id') 
    ->where('modules.title', $this->module) 
    ->where('controllers.title', $this->controller) 
    ->select('namespaces.*') 
    ->with('modules', 'modules.controllers') 
    ->first(); 
+0

Спасибо, фиксированная моя проблема :) –

Смежные вопросы