我有两个表,模块(id,module_name)
和sub_modules (id,module_id,sub_module_name)
。
我想显示一个像这样结构的表:
Sub Module ID | Module Name | Sub Module Name
Modules.php(Model)
class Modules extends Eloquent {
protected $table = 'modules';
public function submodules()
{
return $this->hasMany('SubModules','module_id');
}
}
SubModules.php(模型)
class SubModules extends Eloquent {
protected $table = 'sub_modules';
public function modules() {
return $this->belongsTo('Modules');
}
public function nodes()
{
return $this->hasMany('Nodes','sub_module_id');
}
}
AdminController.php(Controller)
public function subModules() {
return View::make('sub-modules',
array('title'=>'Sub-Modules',
'modules'=>Modules::all(),
'sub'=>Modules::with(array('submodules'))->get()
)
);
}
在我的子模块视图中,我正在获取$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
它不显示来自sub_modules表($ sub-&gt; sub_module_name)的内容,仅显示来自模块。怎么解决这个?并且两个表中都有id
字段,我只需要来自sub_modules的id。
答案 0 :(得分:2)
解决了这个问题:
SubModules::join('modules', 'modules.id', '=','sub_modules.module_id')
->select('sub_modules.*','modules.module_name')->get()
但是,任何人都知道如何用雄辩的关系来做到这一点?
答案 1 :(得分:0)
这个怎么样:
public function subModules() {
return View::make('sub-modules',
array('title'=>'Sub-Modules',
'modules'=>Modules::all(),
'sub'=>Modules::with('submodules')->get()
)
);
}
答案 2 :(得分:0)
您可以调用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()
返回Illuminate\Database\Eloquent\Relations\HasMany
课程,可以致电join()
,select()
等。
答案 3 :(得分:0)
您无法使用&#34; get()&#34;来获取子模块数据
$ submoduledata = Module :: find($ id) - &gt; subModule() - &gt; get();