我在这里看到了一些问题,但没有一个能解决我的问题。我很迷惑。我在社区和想法模型之间有很多关系。它完全保存了数据透视表中的值,但我无法获取要查看的数据。
理念模型:
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
$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
答案 0 :(得分:0)
当您执行$ideas = Idea::paginate(15);
时,您会获得包含许多模型的分页器,例如集合,因此您无法执行$ideas->communities
。你必须循环所有的想法,然后获得每个想法的社区。 p>
$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
。