Laravel Eloquent 关系 findMany 或 find

Phi*_*ers 5 php relationship laravel eloquent laravel-5

如果您有两个模型 Post 和 Comment,并且在 Comment 模型中您定义了一个belongsTo(),称为posts 的关系,我知道可以这样做:

App\Comment::find(1)->posts()->where('category', 3)->get()
Run Code Online (Sandbox Code Playgroud)

但我想要的是将多个主键 id 传递给 find 方法,例如:

App\Comment::find([1,2,3])->posts()->where('category', 3)->get()
Run Code Online (Sandbox Code Playgroud)

或者

App\Comment::findMany([1,2,3])->posts()->where('category', 3)->get()
Run Code Online (Sandbox Code Playgroud)

这两个给了我错误method posts does not exist。那么我还能如何处理这个问题呢?

Ale*_*nin 6

当你使用find()方法时,你得到一个模型,但findMany()返回一个集合。

你可能想要的是:

App\Comment::whereIn('id', [1, 2, 3])->with(['posts' => function($q) {
    $q->where('category', 3);
}])->get();
Run Code Online (Sandbox Code Playgroud)


Phi*_*ers 0

这对我有用@Lukasgeiter他在查询中使用了 with 和 whereHas 的组合。