雄辩的地方哈斯和()

时间:2016-06-04 19:52:43

标签: laravel eloquent

我尝试的是获取我的AppNamespace,AppModule和AppController。所以我使用Laravel 5.2和eloquent运行:

$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 个答案:

答案 0 :(得分: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();