mercredi 19 août 2015

How do I iterate over a foreach in a Laravel controller and pass that to a view?

I'm trying to build a simple idea tracking/commenting system, and on the summary view page I want a little detail about each post. Currently the posts and replies both live in one posts table, with a newtopic boolean to designate top-level posts and a nullable replyto to designate comments.

So I have my controller for the summary page like so:

public function index()
{
    $ideas = DB::table('posts')->addSelect(DB::raw('*,posts.created_at as pca'))
    ->join('users', 'users.id', '=', 'posts.uid')
    ->where('newtopic','1')->orderBy('posts.id','desc')->get();
    return view('ideas.home', ['ideas' => $ideas]);
}

That works well enough, but I'd also like to pull, at least, the comment count and vote count and pass that summary info on to the view. I can't see a good way to do it at the controller level as the @foreach doesn't hit until it gets to the view. I'm still fairly new to laravel and the MVC pattern in general, is there a subcontroller/subview type thing I need to do to get the desired result?

home.blade.php:

@extends('master')

@section('content')
    @foreach($ideas as $idea)
        <div class="container">
            <div class="panel panel-info">
                <div class="panel-heading">
                    <h3 class="panel-title">
                        <a href="{{ 'ideas/'.$idea->id }}">{{ $idea->subject }}</a>
                    </h3>
                </div>
                <div class="panel-body">
                    {{ $idea->content }}
                </div>
                <div class="panel-footer">
                    Posted by {{ $idea->username }} on {{ $idea->pca }}
                </div>
            </div>
        </div>

    @endforeach
@stop



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/1fqMvow
via IFTTT

Aucun commentaire:

Enregistrer un commentaire