Laravel (HasMany) 不检索值

2021-12-26 00:00:00 php laravel laravel-eloquent

我有以下型号:

    namespace App;

use IlluminateDatabaseEloquentModel;

class forum_category extends Model
{
    //

    protected $table = 'forum_category';

    public function posts()
    {
        $this->hasMany('Appforum_post');
    }
}

namespace App;

use IlluminateDatabaseEloquentModel;

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


    public function category()
    {
        $this->belongsTo('Appforum_category');
    }
}

在我的控制器中,我尝试使用他们的帖子获取所有类别:

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

    namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateRoutingController;

use Appforum_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?

推荐答案

查询应如下所示:

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

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

如果您在 forum_post 表中有 category_id,这将加载具有相关帖子的类别.

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

另外,关系应该是:

public function category()
{
    return $this->belongsTo('Appforum_category');
}

相关文章