2013-05-22 96 views
2

我有兩個表,模塊(id,module_name)和子模塊(id,module_id,sub_module_name)。 我想顯示像這樣結構的表格:使用laravel雄辯提取兩個連接表中的數據

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表內容($子> sub_module_name),從模塊只顯示。如何解決這個問題?並且在這兩個表中還有id字段,我只需要來自sub_modules的id。

+0

解決問題與此: 子模塊::加入( '模塊', 'modules.id', '=', 'sub_modules.module_id') - >選擇( 'modules.module_name' 'sub_modules *'。 ) - > get()。但任何人都知道如何用雄辯的關係來做到這一點? – devo

+0

如果您可以讓您的評論成爲答案,以便人們在發現您的問題時能夠看到答案,那會更好。 –

+0

@Anshad像菲爾說的那樣,把它當作答案。 Eloquents關係不會以您需要的方式爲您創建結果集。 –

回答

2

解決的問題是:

SubModules::join('modules', 'modules.id', '=','sub_modules.module_id') 
->select('sub_modules.*','modules.module_name')->get‌​() 

但任何人都知道如何用雄辯的關係,做到這一點?

+1

,你如何用雄辯的關係做到這一點? – vision

0

如何:

public function subModules() { 
    return View::make('sub-modules', 
         array('title'=>'Sub-Modules', 
         'modules'=>Modules::all(), 
         'sub'=>Modules::with('submodules')->get()     
        ) 
    ); 
    } 
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(),等它。

0

不使用 「獲得()」

$ submoduledata =模塊::發現($ ID),你不能得到子模塊的數據 - >子模塊() - >獲得();