【问题标题】:passing pivot table views to laravel将数据透视表视图传递给 laravel
【发布时间】:2016-07-01 21:14:03
【问题描述】:

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

创意模型:

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:

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

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

查看代码

@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

【问题讨论】:

  • 您是否在 storePost() 或之后显示其他方法的数据时收到此错误?
  • 当我显示这个数据然后我得到这个错误。
  • 您能否编辑您的帖子并显示加载此视图的控制器中的方法。
  • 请检查编辑。我不知道如何获取相关数据。

标签: laravel laravel-5


【解决方案1】:

当您执行$ideas = Idea::paginate(15); 时,您会得到一个包含许多模型的分页器,例如一个集合,因此您不能执行$ideas-&gt;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-&gt;communities 时它不起作用,因为$ideas 是一个集合,有15 条记录,而communities 是与单个Idea 模型的关系,该集合不知道@ 987654328@ 是。因此,当您循环 foreach ( $ideas as $idea ) { 时,变量 $idea 是单个 Idea 模型,它可以访问与 App\Community 的 belongsToMany 关系,所以你可以说$idea-&gt;communities。

【讨论】:

  • 你能解释一下吗?如果我不添加分页会感到困惑吗?我需要一个简单的解决方案
  • 感谢您的解释。让我试试这个:)
  • 我已经使用了您给定的代码,但它没有显示任何内容。我在视图中使用了foreach 循环。
  • @QasimAli 你是什么意思它现在显示什么?在您的 publicPages.ideas_in_community 视图中实现这一点。
  • 是的,我在idea_in_community中实现了var_dump(),它显示了整个(app/Idea)对象,但是在尝试打印时它什么也没打印
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 2020-12-29
  • 2019-11-29
相关资源
最近更新 更多