我在用户和类别之间有很多关系。在第三个表中,我有一个名为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条记录,而且还有更多。 如果我用数组替换它,它将返回正确的结果。
关于我缺少的任何想法?
答案 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 %}