2

modules(id,module_name)と sub_modulesの 2 つのテーブルがあります(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 テーブル ($sub->sub_module_name) の内容は表示されず、モジュールのみが表示されます。これを解決するには?またid、両方のテーブルにフィールドがあり、必要なのは sub_modules の ID だけです。

4

4 に答える 4

2

これで問題を解決しました:

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

しかし、雄弁な関係でこれを行う方法を知っている人はいますか?

于 2013-05-29T07:33:26.223 に答える
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()、 などを呼び出すことができます。

于 2015-08-06T13:26:09.493 に答える