【问题标题】:Eloquent query not working雄辩的查询不起作用
【发布时间】:2017-05-29 19:09:15
【问题描述】:

我在用户和类别之间有多对多的关系。在第三个表中,我有一个名为 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');
}

在我的第三个表控制器中,我有以下代码

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 条记录,而且还不止这些。 如果我用数组替换它,它将返回正确的结果。

关于我缺少什么的任何想法?

【问题讨论】:

  • 查看 laravel 文档以了解如何使用数据透视表

标签: php laravel eloquent relationships


【解决方案1】:

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

Auth::user()->categories->pluck('id')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2018-01-26
    • 2014-04-12
    相关资源
    最近更新 更多