Laravel (HasMany) doesnt rectrieve values

戏子无情 提交于 2019-12-20 03:35:11

问题


I have the following models:

    namespace App;

use Illuminate\Database\Eloquent\Model;

class forum_category extends Model
{
    //

    protected $table = 'forum_category';

    public function posts()
    {
        $this->hasMany('App\forum_post');
    }
}

And

namespace App;

use Illuminate\Database\Eloquent\Model;

class forum_post extends Model
{
    //
    protected $table = 'forum_post';


    public function category()
    {
        $this->belongsTo('App\forum_category');
    }
}

in my controller i attempt to get all categories with their posts:

    namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

use App\forum_category as forum_category;


class ForumController extends Controller
{

    public function __construct()
    {

    }

    public function index ()
    {

        $categories = forum_category::all();

        return view('forum', ['categories' => $categories]);
    }

    public function createPost()
    {

    }

    public function createReply()
    {

    }
}

However it seems to only be returning my categories.

Can someone tell me what ive done wrong?


回答1:


The query should look like this:

$categories = forum_category::with('posts')->get();

https://laravel.com/docs/5.5/eloquent-relationships#eager-loading

If you have category_id in the forum_post table, this will load categories with related posts.

Then just iterate over the collection to get posts:

@foreach ($categories as $category)
    @foreach ($category->posts as $post)
        {{ $post->title }}
    @endforeach
@endforeach

Also, the relationship should be:

public function category()
{
    return $this->belongsTo('App\forum_category');
}


来源:https://stackoverflow.com/questions/48431038/laravel-hasmany-doesnt-rectrieve-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!