雄辩的查询不起作用

时间:2017-05-29 19:09:16

标签: php laravel eloquent relationships

我在用户和类别之间有很多关系。在第三个表中,我有一个名为category_id的字段来引用每个记录所属的类别。我正在建立一个系统,一旦用户登录,我希望他们看到具有他们在注册时选择的类别的category_id的记录。

我的代码如下所示 我在用户模型中设置了这种关系,

public function categories()
{
    return $this->belongsToMany('App\Category');
}

还有这个

public function userCats()
{
    return $this->categories()->get();
}

在类别表中我有这种关系设置

public function users()
{
    return $this->belongsToMany('App\User');
}

在我的第3台控制器中,我有以下代码

if(Auth::check()){
    $servo  = Jumong::postOnly()->whereIn('category_id', Auth::user()->userCats())->get();
} else {
    $servo = Jumong::all()->where('type','P');
}
dd($servo);

问题在于以下部分,

Auth::user()->userCats()

它只返回Jumong表中的最后2条记录,而且还有更多。 如果我用数组替换它,它将返回正确的结果。

关于我缺少的任何想法?

1 个答案:

答案 0 :(得分:2)

它不起作用,因为whereIn需要一组id而是  Auth :: user() - > userCats()返回一组类别。 你仍然可以做类似的事情。

{% extends 'layout.twig' %} {% import 'form.twig' as form %} {% block head %} <title>Add a post</title> {% endblock %} {% block content %} <div class='page-header'> <div class='btn-toolbar pull-right'> <div class='btn-group'> <a href="?p=blog" type="button" class="btn btn-default">View all blog posts</a> </div> </div> <h1>Add post</h1> </div> <form action="index.php?p=add-post" method="post" id="add" name="add" enctype="multipart/form-data"> {{ form.input('title', 'Title', addPostDatas.title) }} {{ form.textarea('header', 'Header', 03, addPostDatas.header) }} {{ form.textareacontent('content', 'Content', 30, addPostDatas.content) }} {{ form.input('author', 'Author', addPostDatas.author) }} {{ form.file('image', 'Optional - Select a featured image (max size 4Mo)')}} <div class="form-group"><br> <button type="submit" class="btn btn-success" name="publish">Publish the post</button> </div> </form> {% endblock %}