Orm 使用laravel eloquent从两个连接的表中获取数据

Orm 使用laravel eloquent从两个连接的表中获取数据,orm,module,laravel,laravel-4,eloquent,Orm,Module,Laravel,Laravel 4,Eloquent,我有两个表,modules(id,module\u name)和sub\u modules(id,module\u id,sub\u module\u name)。 我想显示如下结构的表: Sub Module ID | Module Name | Sub Module Name Modules.php(模型) SubModules.php(模型) AdminController.php(控制器) 在我的子模块视图中,我正在获取$sub变量,如下所示: @foreach ($sub as $s

我有两个表,modules
(id,module\u name)
和sub\u modules
(id,module\u id,sub\u module\u name)
。 我想显示如下结构的表:

Sub Module ID | Module Name | Sub Module Name
Modules.php(模型)

SubModules.php(模型)

AdminController.php(控制器)

在我的子模块视图中,我正在获取
$sub
变量,如下所示:

@foreach ($sub as $sub)
   <tr class="gradeX">
      <td>
         <input type="checkbox" value="{{ $sub->id }}" id="check_{{ $sub->id }}"/>
      </td>
      <td>
         {{ $sub->module_name }} 
      </td>
      <td>
         {{ $sub->sub_module_name }} 
      </td>
      <td>
          <a onclick="edit_sub_module({{ $sub->id }})" title="Edit"><i class="icon-edit icon-2x"></i></a>
      </td>
    </tr>
@endforeach
@foreach($sub作为$sub)
{{$sub->module_name}
{{$sub->sub_模块名称}
@endforeach

它不显示sub_模块表($sub->sub_模块名称)中的内容,只显示来自模块的内容。如何解决这个问题?两个表中都有
id
字段,我只需要子模块的id。

解决了这个问题:

SubModules::join('modules', 'modules.id', '=','sub_modules.module_id')
->select('sub_modules.*','modules.module_name')->get‌​()
但是有人知道如何用雄辩的关系来做到这一点吗?

这个怎么样:

public function subModules() {
     return View::make('sub-modules',
                        array('title'=>'Sub-Modules',
                       'modules'=>Modules::all(),
                       'sub'=>Modules::with('submodules')->get()                 
                      )
     );
  }

您可以调用AdminController.php

$module = new \App\Module::find(1); // put needed module_id;
$submodules = $module->submodules()
    ->join('modules', 'modules.id', '=','sub_modules.module_id')
    ->select('sub_modules.*','modules.module_name')
    ->get‌​();

$module->submodules()
返回
illighted\Database\Eloquent\Relations\has许多
类,可以调用
join()
select()
,等等。

如果不使用“get()”,就无法获取子模块数据


$submoduledata=Module::find($id)->subModule()->get()

解决了这个问题:子模块::join('modules','modules.id','=','sub_modules.module_id')->select('sub_modules.*','modules.module_name')->get()。但有人知道如何用雄辩的关系来表达吗?如果你能把你的评论作为一个答案,这样人们在发现你的问题时就会看到,那就更好了。@Anshad,正如Phil所说,把它作为一个答案。雄辩的关系不会以你所需要的方式为你建立结果集。你知道如何利用雄辩的关系做到这一点吗?
SubModules::join('modules', 'modules.id', '=','sub_modules.module_id')
->select('sub_modules.*','modules.module_name')->get‌​()
public function subModules() {
     return View::make('sub-modules',
                        array('title'=>'Sub-Modules',
                       'modules'=>Modules::all(),
                       'sub'=>Modules::with('submodules')->get()                 
                      )
     );
  }
$module = new \App\Module::find(1); // put needed module_id;
$submodules = $module->submodules()
    ->join('modules', 'modules.id', '=','sub_modules.module_id')
    ->select('sub_modules.*','modules.module_name')
    ->get‌​();