将数据透视表视图传递给laravel

时间:2016-07-01 08:42:23

标签: laravel laravel-5

我在这里看到了一些问题,但没有一个能解决我的问题。我很迷惑。我在社区和想法模型之间有很多关系。它完全保存了数据透视表中的值,但我无法获取要查看的数据。

理念模型:

public function communities() {
    return $this->belongsToMany('App\Community', "community_idea");
}

社区模式:

public function ideas() {
    return $this->belongsToMany('App\Idea', "community_idea");
}

存储帖子功能:

//function for creating Idea
public function storePost(IdeaRequest $request)
{
    if ($request->hasFile('idea_image')) {
        $filename = $request->file('idea_image')->getClientOriginalName();
        $moveImage = $request->file('idea_image')->move('images/', $filename);
    }
    $idea = new Idea();
    $idea->idea_title = $request->input('idea_title');
    $idea->user_id = Auth::id();
    $idea->idea_image = $moveImage;
    $idea->idea_info = $request->input('idea_info');
    $idea->idea_location = $request->input('idea_location');
    $idea->idea_goal = $request->input('idea_goal');
    $idea->idea_description = strip_tags($request->input('idea_description'));
    $idea->save();
    $idea->communities()->attach($request->input('selection'));
    Session::set('idea_id',$idea->id);
    session()->flash('flash_message', 'Your idea has been submitted for Review, Kindly Fill this Work BreakDown of You Work');
    return redirect()->route('create_wbs');
}

查看: 当我尝试使用它时,它会抛出:

  

未定义属性:Illuminate \ Pagination \ LengthAwarePaginator :: $ communities`错误

@foreach($ideas->communities as $idea)
   @if($idea->status == 1)
     <div class="grid_3">
     <div class="project-short sml-thumb">

     <div class="top-project-info">
     <div class="content-info-short clearfix">
     <a href="{{URL::to('showidea', array($idea->id))}}" class="thumb-img">
     <img src="{{asset($idea->idea_image)}}" alt="{{$idea->idea_title}}">
     </a>
     <div class="wrap-short-detail">
     <h3 class="rs acticle-title"><a class="be-fc-orange" href="{{URL::to('showidea', array($idea->id))}}"><q>{{$idea->idea_title}}</q></a></h3>
     <p class="rs tiny-desc">by <a href="#" class="fw-b fc-gray be-fc-orange">{{$idea->User->name}}</a></p>
     <p class="rs title-description">{{$idea->idea_info}}</p>
     <p class="rs project-location">
     <i class="icon iLocation"></i>
     {{$idea->idea_location}}
     </p>
     </div>
    </div>
  </div>
</div>
</div><!--end: .grid_3 > .project-short-->
  @endif
@endforeach

修改

    public function showCommunities($id)
    {
        $community = Community::findOrFail($id);
        $communities = Community::all();
        $ideas = Idea::paginate(15);
//        $ideas->communities()->ideas;
        return view('publicPages.ideas_in_community', compact(['ideas', 'community', 'communities']));

    }

编辑2:

当我var_dump ideass时,它会显示以下数据。

var_dump on ideass variable

当我var_dump $idea时,它会显示以下数据

var_dump on idea

查看代码

@foreach($ideas as $idea)
    @foreach($idea->communities as $ideass)
      @if($ideass->status == 1)
        <div class="grid_3">
        <div class="project-short sml-thumb">
        <div class="top-project-info">
        <div class="content-info-short clearfix">
        <a href="{{URL::to('showidea', array($idea->id))}}" class="thumb-img">
        <img src="{{asset($ideass->idea_image)}}" alt="{{$ideass->idea_title}}">
        </a>
        <div class="wrap-short-detail">
        <h3 class="rs acticle-title"><a class="be-fc-orange" href="{{URL::to('showidea', array($idea->id))}}"><q>{{$ideass->idea_title}}</q></a></h3>
        <p class="rs tiny-desc">by <a href="#" class="fw-b fc-gray be-fc-orange">{{$ideass->User->name}}</a></p>
        <p class="rs title-description">{{$ideass->idea_info}}</p>
        <p class="rs project-location">
        <i class="icon iLocation"></i>
        {{$ideass->idea_location}}
        </p>
        </div>
        </div>
        </div>
        </div>
        </div><!--end: .grid_3 > .project-short-->
      @endif
    @endforeach
@endforeach

1 个答案:

答案 0 :(得分:0)

当您执行$ideas = Idea::paginate(15);时,您会获得包含许多模型的分页器,例如集合,因此您无法执行$ideas->communities。你必须循环所有的想法,然后获得每个想法的社区。

$ideas = Idea::with('communities')->paginate(15);

foreach ( $ideas as $idea ) {
    foreach ( $idea->communities as $community ) {
        //DO STUFF
    }
}

修改

$ideas = Idea::paginate(15);包含一个包含来自数据库的15条记录的集合,每条记录与 App \ Community belongsToMany 关系,您已在模型中定义。当您尝试$ideas->communities时,它不起作用,因为$ideas是一个集合,15条记录和communities是与单个 Idea 模型的关系,该集合不知道communities是什么。因此,当您循环foreach ( $ideas as $idea ) {时,变量$idea是一个 Idea 模型,并且它可以访问与 App \ Community的 belongsToMany 关系,所以你可以说$idea->communities