gpt4 book ai didi

Laravel关系 `whereNotIn`其他表

转载 作者:行者123 更新时间:2023-12-02 04:39:28 27 4
gpt4 key购买 nike

我正在尝试返回在 PostsHistory 模型中没有行的所有 Posts(Model:Post)。

我的代码是:

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

public function remaining_posts(){
$history = PostHistory::all()->pluck('id');
return $this->posts->whereNotIn('post_id', $history);
}

但是我得到一个错误

[BadMethodCallException]      
Method whereNotIn does not exist.

有什么方法可以通过关系获取 remaining_posts 还是只能在 Controller 中完成?

最佳答案

将最后一行编辑为:

return $this->posts()->whereNotIn('post_id', $history)->get();

  1. 您需要将posts 更改为posts()posts 是一个 Illuminate\Database\Eloquent\Collection 对象,它没有 whereNotIn() 方法,其中 posts() 将返回一个 Illuminate\Database\Eloquent\Relations\HasMany 对象,其中定义了 whereNotIn() 方法。

  2. whereNotIn() 返回一个 Illuminate\Database\Query\Builder 对象。所以你需要调用 get() 来获取一个集合。但是,如果您希望灵活地将其他 Builder 方法链接到您的 remaining_posts() 方法,请不要使用 get()

关于Laravel关系 `whereNotIn`其他表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38587400/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com