在Laravel中显示父数据下的子数据

时间:2014-11-22 03:17:57

标签: php mysql laravel controller eloquent

我有两个表behavioralmainbehavioralsub,其中behavioralsub是行为域的chils表。显然,behavioralsub有parent_id,它对应于行为域的id。我试图使用此代码加入这两个表。 behavioralmain Table

ID |   category_name  |   actual weight   | weight
 1      commitment            0               7
 2      category              0               5

behavioralsub Table

ID |   category_name  |   parent_id   |  weight
 1      administer            1            7
 2      president             1            5
 3      secretary             2            7
 4      mixture               2            5

behavioralmain.model     

     /**
     * The database table used by the model.
     *
     * @var string
     */
    public $timestamps=false;
    protected $table = 'behavioralmain';


    public function behavioralsub()
         {
            return $this->hasMany('BehavioralSub','id','parent_id');
         }

}

behavoiralsub.model

<?php 
class BehavioralSub  extends Eloquent   {

     /**
     * The database table used by the model.
     *
     * @var string
     */
    public $timestamps=false;
    protected $table = 'behavioralsub';

    protected $fillable=array('id','survey_question','weight');


    public function parenting() {
    return $this->belongsTo('behavioralmain','id','parent_id');
  }
}

BehavoiralSubController.php

public function index()
    {
        return View::make('behavioralsub.index')->with('sub',BehavioralSub::get())->with('sub',BehavioralMcain::with(array('behavioralsub'))->get());
    }

Index.blade.php

 <tbody>
@foreach($sub as $sub)
    <tr>
      <td>{{{$sub->category_name}}}</td>
      <td>{{{$sub->survey_question}}}</td>
      <td>{{{$sub->weight}}}</td>                    
      <td><a href="{{{route('behavioralsub.edit',$sub->id)}}}"><i class="fa fa-edit"></i>Edit</a>                        
      </td>
      <td>
                                        <a href="{{{route('behavioralsub.destroy',$sub->id)}}}"><i class="glyphicon glyphicon-trash"></i>Delete</a>                        

                                    </td>

                                </tr>
                                @endforeach
                            </tbody>

在上面的代码中,我认为它可以得到我想要什么,但伤心地说,在观察侧只显示是这样而已;这个父表,而子表没有检索, categorycommitment

我需要的输出是这样的。

commitment
   -administer
   -president
category
   -secretary
   -mixture

请该怎么做。我已经尝试了一切,但没有发生任何事情

1 个答案:

答案 0 :(得分:0)

试试这个:

behavioralsub model:

public function parenting() {
    return $this->belongsTo('BehavioralMain', 'parent_id', 'ID');
}

行为主体模型

public function behavioralsub() {
    return $this->hasMany('BehavioralSub', 'parent_id', 'ID');
}

将数据传递给View的方式在所有错误的位置都有右括号,似乎是链接错误对象的方法。尝试将其更改为:

public function index() {
        return View::make('behavioralsub.index')->with(array('main' => BehavioralMcain::with('behavioralsub')->get());
}

这将使您的观点:

<tbody>
    @foreach($main->behavioralsub as $sub)
        <tr>
            <td>{{{$sub->category_name}}}</td>
            <td>{{{$sub->survey_question}}}</td>
            <td>{{{$sub->weight}}}</td>                    
            <td>
                <a href="{{{route('behavioralsub.edit',$sub->id)}}}"><i class="fa fa-edit"></i>Edit</a>                        
            </td>
            <td>
                <a href="{{{route('behavioralsub.destroy',$sub->id)}}}"><i class="glyphicon glyphicon-trash"></i>Delete</a>                        

            </td>

        </tr>
    @endforeach
</tbody>