Orm 使用laravel eloquent从两个连接的表中获取数据
我有两个表,modulesOrm 使用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
(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();