2

これは非常に基本的なものでなければなりませんが、その方法を見つけることができないようです。

私はテーブルとユニットとアーミー(アーミーには多くのユニットが含まれています)の間に1対多の関係があり、これらは私のモデルです:

class Army extends Eloquent {
    protected $guarded = array();

    public static $armies = array();

    protected $table = 'armies';

    public function units()
    {
        return $this->hasMany('Unit');
    }

}

と:

class Unit extends Eloquent {
    protected $guarded = array();

    public static $units = array();

    protected $table = 'units';

    public function armies()
    {
        return $this->belongsTo('Army', 'army');
    }


}

したがって、私のユニット テーブルには、そのユニットに関連する軍の ID を含む "army" という行があり、次の方法で単純な ul リストをビューに表示したい (これをユニットに表示したい)インデックス ビュー):

 <ul>
      <li>Army 1 name
           <li>Unit 1 of Army 1</li>
           <li>Unit 2 of Army 1</li>
      </li>
      <li>Army 2 name
           <li>Unit 1 of Army 2</li>
           <li>Unit 2 of Army 2</li>
      </li>
 </ul>

これを行うには、ユニットコントローラーを次のようにします。

class UnitsController extends BaseController {

protected $layout = 'master';

/**
 * Display a listing of the resource.
 *
 * @return Response
 */
public function index()
{
    $units = Unit::all();

    $this->layout->content = View::make('units.index', compact('units'));


}
/*Other stuff*/
}

そして私の見解では(ビュー/ユニット内のindex.blade.php):

<ul class="units">
    @foreach($units as $unit)
        {{$unit->army}}
            <li>        
        {{ HTML::link(route('units.show', ['units' => $unit->id]), $unit->name)}}
    </li>
@endforeach
</ul>

しかし、{{$unit->army}} は (もちろん) 軍の ID を表示しているだけで、その名前が欲しいのですが、どうすればよいでしょうか?

4

1 に答える 1

3

スキーマを正しく設定したと仮定すると、 armiesテーブルには少なくともid (自動インクリメント) があり、unitsテーブルには少なくともid (自動インクリメント) とArmy_id (整数、符号なし) があり、これを試してください:

モデル

class Army extends Eloquent {
   public function units()
   {
     return $this->hasMany('Unit');
   }
}


class Unit extends Eloquent {
  public function armies()
  {
    return $this->belongsTo('Army');
  }
}

コントローラーで、ユニットを持つすべての軍を取得し たい:

$armies = Army::with('units')->get();

あなたのビューでは、各軍隊の名前とそれぞれのユニットを出力する結果セットをループしたいと考えています。

@foreach($armies as $army)
    {{$army->name}}
       <ul>
          @foreach($army->units as $aunit)
            <li>        
               {{ $aunit->name }}
            </li>
          @endforeach
       </ul>
@endforeach

それがうまくいかない場合は、頭を食べます。

于 2013-06-05T11:46:47.477 に答える