我尝试的是获取我的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则不返回记录。我该如何解决这个问题?
答案 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();