【发布时间】:2013-05-17 01:44:27
【问题描述】:
我有两个表,模块 (id,module_name) 和 sub_modules(id,module_id,sub_module_name)。
我想显示一个像这样结构的表格:
Sub Module ID | Module Name | Sub Module Name
Modules.php(模型)
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(控制器)
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 table($sub->sub_module_name) 中的内容,仅显示模块中的内容。如何解决这个问题?而且两个表中都有 id 字段,我只需要 sub_modules 中的 id。
【问题讨论】:
-
解决了这个问题:SubModules::join('modules', 'modules.id', '=','sub_modules.module_id')->select('sub_modules.*','modules .module_name')->get() 。但是有谁知道如何用雄辩的关系做到这一点?
-
如果您可以将您的评论作为答案,这样人们在找到您的问题时会看到它会更好。
-
@Anshad 正如菲尔所说,将其作为答案。 Eloquents 关系不会按照您需要的方式为您构建结果集。
标签: orm module laravel laravel-4 eloquent